換個思路 SQL2005下字串欄位內的字元排序

2021-08-23 12:53:14 字數 1625 閱讀 6883

這個是狙狙的sql解法。

引用需求

今天和梁翁在群裡聊天,小傢伙突然丟擲乙個有意思的問題,那就是字串欄位內的字串排序問題,比如有列col,有資料'rdgs' ,要求輸出為'dgrs'。

依靠ascii來分解字串的時候碰到相同字串會有問題,和上面一篇oracle中的解法一樣,索性根據字串長度把sql語句寫長點...這樣還可以支援任何字元

我的想法

--測試資料

declare

@t table

(col varchar

(10))

insert

@t select

'aweafsa'

insert

@t select

'dfsfa'

insert

@t select

'dqwf'

--資料生成

select

col,

col2=

replace

((select

c as [data()] from

(select

*,c=

case rn

when

1 then

substring

(col,1,1)

when

2 then

substring

(col,2,1)

when

3 then

substring

(col,3,1)

when

4 then

substring

(col,4,1)

when

5 then

substring

(col,5,1)

when

6 then

substring

(col,6,1)

when

7 then

substring

(col,7,1)

when

8 then

substring

(col,8,1)

when

9 then

substring

(col,9,1)

when

10 then

substring

(col,10,1)

else

''end

from

(select

col,rn from @t,(

select rn=row_number()

over

(order

by id)

from sysobjects)b

where

b.rn<=10)t1)t2 where c <>

''and col=t3.col order

by c for

xmlpath(''

)),' ',''

)from

@t t3

/* col col2

---------- ------------

aweafsa aaaefsw

dfsfa adffs

dqwf dfqw */

換個思路 SQL2005下字串欄位內的字元排序

這個是狙狙的sql解法。引用需求 今天和梁翁在群裡聊天,小傢伙突然丟擲乙個有意思的問題,那就是字串欄位內的字串排序問題,比如有列col,有資料 rdgs 要求輸出為 dgrs 依靠ascii來分解字串的時候碰到相同字串會有問題,和上面一篇oracle中的解法一樣,索性根據字串長度把sql語句寫長點....

sql2005判斷字元(串)出現次數

方法 create function angel variable varchar max 要尋找的字元 char varchar max 目標字串 returns int begin declare index int set index len variable len replace vari...

sql serser 2005 下合併字串

無論是在sql 2000,還是在 sql 2005 中,都沒有提供字串的聚合函式,所以,當我們在處理下列要求時,會比較麻煩 有表tb,如下 id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到結果 id values 1 aa,bb 2 aaa,bbb,ccc 即,gr...