SQL2005下:字符串字段内的字符排序
来源:优易学  2011-2-3 18:35:24   【优易学:中国教育考试门户网】   资料下载   IT书店
  一个有意思的问题,那就是字符串字段内的字符串排序问题,比如有列col,有数据’RDGS’ ,要求输出为’DGRS’。
  --测试数据
  DECLARE @T TABLE(COL VARCHAR(10))
  INSERT @T SELECT ’WEFSA’
  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
  ---------- --------
  WEFSA AEFSW
  DFSA ADFS
  DQWF DFQW
  (3 行受影响)
  */
  --附录:
  ;WITH Numbers AS
  (
  SELECT TOP(20)
  ROW_NUMBER() OVER(ORDER BY [object_id]) AS ID
  FROM sys.objects
  ),
  Liang AS
  (
  SELECT
  A.col,
  B.ID,
  SUBSTRING(A.col,B.ID,1) AS v
  FROM @t AS A
  JOIN Numbers AS B
  ON SUBSTRING(A.col,B.ID,1)<>’’
  )
  SELECT
  col,
  REPLACE(
  (
  SELECT
  v AS [data()]
  FROM Liang
  WHERE col=A.col
  ORDER BY v
  FOR XML PATH(’’)
  ),’ ’,’’)
  FROM @t AS A

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训