sql-server-2005 – 在Sql Server 2005中将字符串拆分为单个字符
发布时间:2020-05-25 10:15:31 所属栏目:MsSql 来源:互联网
导读:嗨,我有一个输入 ID data1 hello2 sql 期望的输出是 ID RowID Chars1 1 H1 2 e1 3 l1 4 l1 5 o2 1 s2 2 q2 3 l 我的方法到目前为止 Declare @t table(ID INT I
|
嗨,我有一个输入 ID data 1 hello 2 sql 期望的输出是 ID RowID Chars 1 1 H 1 2 e 1 3 l 1 4 l 1 5 o 2 1 s 2 2 q 2 3 l 我的方法到目前为止 Declare @t table(ID INT IDENTITY,data varchar(max))
Insert into @t Select 'hello' union all select 'sql'
--Select * from @t
;With CteMaxlen As(
Select MaxLength = max(len(data)) from @t),Num_Cte AS
(
SELECT 1 AS rn
UNION ALL
SELECT rn +1 AS rn
FROM Num_Cte
WHERE rn <(select MaxLength from CteMaxlen)
)
-- Shred into individual characters,Get_Individual_Chars_Cte AS
(
SELECT
ID,Row_ID =ROW_NUMBER() Over(PARTITION by ID Order by ID),chars
FROM @t,Num_Cte
CROSS APPLY( SELECT SUBSTRING((select data from @t),rn,1) AS chars) SplittedChars
)
Select * from Get_Individual_Chars_Cte
查询根本不起作用
编辑: 我找到了答案 ;with Get_Individual_Chars_Cte AS
(
SELECT
ID,SUBSTRING(Data,Number,1) AS [Char]--,FROM @t
INNER JOIN master.dbo.spt_values ON
Number BETWEEN 1 AND LEN(Data)
AND type='P'
)
Select * from Get_Individual_Chars_Cte
需要帮助 解决方法;with cte as ( select ID,substring(data,1,1) as Chars,stuff(data,'') as data,1 as RowID from @t union all select ID,RowID + 1 as RowID from cte where len(data) > 0 ) select ID,RowID,Chars from cte order by ID,RowID (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
