sqlserver排序問題欄位中含有字母數字漢字

2021-03-12 01:02:49 字數 1604 閱讀 3674

1樓:匿名使用者

可以先把數值型轉字元 再根據字元的長度和數值聯合排序

order by len(convert(nvarchar(3),id)) , id

2樓:匿名使用者

如果數字都是小於10的,可以直接order by,按照字元規則排序就是你想要的這個。

如果版數字權有兩位以上的,這時候11會排在2的前面,如果想數字按照數字的規則排序,字母按照字母的規則排序,需要根據條件將數字和字母分別查詢出來進行排序,然後使用union all聯接出結果。

3樓:匿名使用者

if object_id('fn_getnumberfromstring') is not null

begin

drop function fn_getnumberfromstring;

end;

gocreate function fn_getnumberfromstring ( @str nvarchar(80) )

returns int

asbegin

declare @i int ,

@len int;

set @len = len(@str);

if @len = 0

return 0;

set @i = 1;

declare @char varchar(1);

set @char = left(@str, 1);

declare @outstr varchar(80);--用於輸e68a8462616964757a686964616f31333363373134出

declare @tmpstr varchar(81);--用於提高效能

set @outstr = '';

set @tmpstr = '0';

while @i <= @len

begin

if patindex('%[0-9]%', @char) = 1

and patindex('%[0-9]%', right(@tmpstr, 1)) = 1

begin

set @outstr += @char;

set @tmpstr += @char;

end;

if len(@outstr) > 0

and patindex('%[0-9]%', @char) = 0

set @tmpstr += @char;

if patindex('%[0-9]%', right(@tmpstr, 1)) = 0

begin

goto outlocation;

end;

set @i += 1;

set @char = substring(@str, @i, 1);

end;

outlocation:

return case when @outstr='' then 0 else cast(@outstr as int ) end;

end;go

4樓:匿名使用者

資料庫排序應該是根據第一個字元的ascii碼來的,如果第一個相同,就根據第二個

如何用SQL語句修改欄位的排序規則

請把資料列出來,到底想實現什麼樣的。sql排序子句的語法是 order by n 大括號 的內容表示是必有的內容 這裡應該回是你提問的內容 中括答號表示的是可選的內容 連線符 連線的是任意有一個的內容 例如 order by seq id seq id假設是表中的序號欄位,這樣是預設按asc順序排序...

sql server安裝問題

安裝2005要先檢查本機的安裝環境是否符合要求,在光碟的安裝目錄不是有個 安裝前什麼什麼的檢查工作 你讓它先檢查下,一般盜版的xp系統有以下不足 dom 沒啟動,iis服務沒驅動或沒安裝,登錄檔的鍵值不符合。你必須要先解決這幾個問題才能安裝完全。不知道樓主進行檢查過沒 你要裝這個軟體最好不要用gho...

想問大家問題?(字數較長),想問大家三個問題?(字數較長)

第三個問題 應該不是喜歡。高中時候班上有那種青春浮動的氣息,所以那會我也想趕上青春的尾巴,找了一個男生來暗戀。就是會注意他,上課會看看他,但是畢業時對他沒有捨不得的情緒。所以感覺你也差不多,沒有喜歡。個人覺得,第一個既然對所有人都是那樣,就不是在針對你,只是你自己感覺他在針對你.第二個,我更覺得他只...