Sql server 如何按字母顺序对字符串排序
我有一个表,其中包含以下数据Sql server 如何按字母顺序对字符串排序,sql-server,sql-server-2008,sorting,Sql Server,Sql Server 2008,Sorting,我有一个表,其中包含以下数据 Item ...... xzypq abdcfe 如何对列中的字符串进行排序并获得以下结果 Item ...... pqxyz abcdef 可能是尝试下面的链接,这可能会有所帮助 使用递归CTE也可以做到这一点 SELECT 'xzypq' NAME INTO #temp UNION ALL SELECT 'abdcfe' 递归CTE 为什么要在SQL中执行此操作?您不能在应用程序代码中执行此操作吗?不能。根据要求,我需要在SQL本身中执行此操作。使用
Item
......
xzypq
abdcfe
如何对列中的字符串进行排序并获得以下结果
Item
......
pqxyz
abcdef
可能是尝试下面的链接,这可能会有所帮助 使用递归CTE也可以做到这一点
SELECT 'xzypq' NAME
INTO #temp
UNION ALL
SELECT 'abdcfe'
递归CTE
为什么要在SQL中执行此操作?您不能在应用程序代码中执行此操作吗?不能。根据要求,我需要在SQL本身中执行此操作。使用select*from table_name order by ITEM没有内置函数来执行此操作。您需要编写自己的函数。您可以参考此内容了解一种可能的实现方式:这是排序,而不是排序@praveen_Programmer请在此处添加答案的主要部分,以防稍后链接失效。谢谢@shree.par18我已经添加了它,我希望这很好:
SELECT 'xzypq' NAME
INTO #temp
UNION ALL
SELECT 'abdcfe'
;WITH cte
AS (SELECT Cast(NAME AS VARCHAR(50)) AS st,NAME AS name1,1 AS rn
FROM #temp
UNION ALL
SELECT Cast(Substring(NAME, rn, 1) AS VARCHAR(50)),name1,rn + 1
FROM cte a
JOIN #temp b
ON a.name1 = b.NAME
AND rn < Len(a.name1) + 1)
SELECT DISTINCT (SELECT '' + st
FROM cte b
WHERE a.name1 = b.name1
AND rn <> 1
ORDER BY st
FOR XML PATH ('')) AS Ordered_String
FROM cte a
WHERE rn <> 1
Ordered_String
--------------
abcdef
pqxyz