国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如果對字符型編號字段(如1-2)進行排序

2024-07-21 02:07:06
字體:
來源:轉載
供稿:網友
問題說明:在開發中經常遇到要對“1-2”、“1-15”或“1.2”、“1.15”這樣的數據字段進行排序,而這樣的字段不能直接通過order by的方式來排序。解決方法:通過一個用戶函數將此類數據字段變成輸出成直接可以排序的的字段: create function dbo.getnumberorderstring
(
@numberstring  nvarchar(200), --待處理字符
@splitchar nvarchar(10) = '-', --分隔符
@length int = 2 --每段的字符長度
)returns  nvarchar(500) as 
begin
 declare @result  nvarchar(500) -- 結果
 set @result = ''
 declare @f int -- 第一個分隔字符的位置 while  len(@numberstring) > 0
 begin
  -- 取出字符串
  set @f = charindex(@splitchar, @numberstring)  --取第一個分隔串的位置
  --print @f
  declare @v nvarchar(100)
  if @f = 0
  begin
   set @v = @numberstring
   --print @v
   set @numberstring = ''
   --print @numberstring
  end
  else
  begin
 
   set @v = substring(@numberstring, 0, @f )  --取第一個分隔串的之前值
   --print @v
   set @numberstring = substring(@numberstring, @f + 1, len(@numberstring) - @f)  --取第一個分隔串之后的值
   --print @numberstring
   
  end
  
  -- 按長度對齊字符串
  -- if len(@v) > @length raiserror('對齊的長度超出范圍', 1, 1)
  if isnumeric(@v) = 1 set @v = replicate('0', @length - len(@v)) + @v
  else set @v = @v + replicate('0', @length - len(@v))
  set @result = @result + @v
 end
 return @result
end 
使用實例:select * from item order by dbo.getnumberorderstring(id, '-', 3)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汤阴县| 龙山县| 三河市| 双牌县| 平阳县| 龙口市| 依安县| 武威市| 衡阳县| 吉隆县| 锡林浩特市| 马尔康县| 九龙坡区| 林西县| 唐山市| 花莲市| 洛浦县| 上饶市| 永修县| 鸡西市| 萍乡市| 临武县| 汝阳县| 平陆县| 北川| 阿克苏市| 靖江市| 犍为县| 易门县| 高淳县| 阳山县| 沁水县| 英德市| 新巴尔虎右旗| 平陆县| 阿拉善盟| 张掖市| 彭山县| 藁城市| 彰化县| 聂荣县|