再议SQL2005下字符串字段内的字符排序

作者: 胡林

时间: 2009年1月20日

 

首选感谢近身剪(http://blog.csdn.net/jinjazz/archive/2009/01/20/3844336.aspx)对我前一篇关于列内字符串间字符排序问题的指正,(汗一个先,如果出现相同字符的问题没注意),我现修正这个问题,有请JJ和大家再次指正。

-----------------------------------------------------------------------
-- Author: happyflystone 
-- Date : 2009-01-20 23:11:11
-- Ver: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) 
-- Apr 14 2006 01:12:25 
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
-- 
----------------------------------------------------------------------
 
--测试数据
DECLARE @T TABLE(COL VARCHAR(10))
INSERT @T SELECT 'AWEAFSA'
INSERT @T SELECT 'DFSA'
INSERT @T SELECT 'DQWF'

--数据生成
;WITH T 
AS
( 
 SELECT top 26 ROW_NUMBER() OVER (ORDER BY ID) AS n
 FROM SYS.SYSOBJECTS
),
T2
AS
(
 SELECT col,CHAR(64+N) AS M,N
 FROM @T JOIN T
 ON CHARINDEX(CHAR(64+N),COL) > 0
)
SELECT 
 COL,
 replace(
 (SELECT M as [data()] FROM T2 WHERE COL = T3.COL ORDER BY N FOR XML PATH('')
 ),' ','') AS NEWCOL
FROM @T T3

--结果
/*
COL NEWCOL
---------- --------
AWEAFSA AAAEFSW
DFSA ADFS
DQWF DFQW

(3 行受影响) 
*/

最后再次与梁的比了一下,效率还是高了点

说明:程序仅考虑了26个字母串的处理,嘿嘿如果所有字符都考虑还是用分解串的方法

 


 

 

下一篇:分解XML- 胡林