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

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

 

   

 

 首选感谢近身剪(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个字母串的处理,嘿嘿如果所有字符都考虑还是用分解串的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值