处理字符串_10_对字符串重新按字母排序重新组合
生活随笔
收集整理的這篇文章主要介紹了
处理字符串_10_对字符串重新按字母排序重新组合
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ?對字符串重新按字母排序重新組合
需求描述
需求:將emp表里ename按照字母順序重新組合生成新的字符.
解決方法:這里通過字符串合并函數(shù)或者結(jié)合substring和row_number完成該效果.
注: 數(shù)據(jù)庫數(shù)據(jù)集SQL腳本詳見如下鏈接地址
員工表結(jié)構(gòu)和數(shù)據(jù)初始化SQL腳本
SQL代碼
--Sql Server: WITH x(ename,ename_Split) AS ( SELECT TOP 100000 ename,SUBSTRING(e.ENAME,seq.pos,1) AS ename_SplitFROM (SELECT ENAME FROM emp) e,(SELECT number AS pos FROM master.[dbo].[spt_values] WHERE type = 'P' AND number>0) seqWHERE seq.pos<=LEN(e.ename)ORDER BY ename, ename_Split )SELECT DISTINCTename, STUFF((SELECT N'' + CAST(ename_Split AS VARCHAR(255))FROM x e1WHERE e1.ename = e2.ename FOR XML PATH ('')), 1, 0, '') AS StrByAlph FROM x e2注: 如果想在CTE里使用[]排序,需要在查詢里指定TOP.
消息 1033,級別 15,狀態(tài) 1,第 67 行
除非另外還指定了 TOP、OFFSET 或 FOR XML,否則,ORDER BY 子句在視圖、內(nèi)聯(lián)函數(shù)、派生表、子查詢和公用表表達式中無效。
執(zhí)行結(jié)果
-- Mysql: SELECT ename,group_concat(SUBSTRING(e.ENAME,seq.num,1) ORDER BY SUBSTRING(e.ENAME,seq.num,1) separator '') AS StrByAlph FROM (SELECT ENAME FROM emp) e,(SELECT i AS num FROM tb_incr)seq WHERE seq.num<=LENGTH(e.ename) GROUP BY ename ORDER BY ename,SUBSTRING(e.ENAME,seq.num,1)-- 注: 這里借助group_concat函數(shù)里的ORDER BY關(guān)鍵字,對已經(jīng)排序的字母進行合并.?
總結(jié)
以上是生活随笔為你收集整理的处理字符串_10_对字符串重新按字母排序重新组合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑插上u盘打不开怎么回事 电脑连接U盘
- 下一篇: 处理字符串_11_判断一个字符是否是数字