這個是狙狙的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...