嗨,我有一个输入
ID data
1 hello
2 sql
Run Code Online (Sandbox Code Playgroud)
期望的输出是
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
Run Code Online (Sandbox Code Playgroud)
我的方法到目前为止
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 …Run Code Online (Sandbox Code Playgroud) 我有一张看起来像的桌子
ID Layout
1 hello,world,welcome,to,tsql
2 welcome,to,stackoverflow
Run Code Online (Sandbox Code Playgroud)
期望的输出应该是
Id Splitdata
1 hello
1 world
1 welcome
1 to
1 tsql
2 welcome
2 to
2 stackoverflow
Run Code Online (Sandbox Code Playgroud)
我已通过以下查询完成此操作
Declare @t TABLE(
ID INT IDENTITY PRIMARY KEY,
Layout VARCHAR(MAX)
)
INSERT INTO @t(Layout)
SELECT 'hello,world,welcome,to,tsql' union all
SELECT 'welcome,to,stackoverflow'
--SELECT * FROM @t
;With cte AS(
select F1.id
,O.splitdata
from
(
select *,
cast('<X>'+replace(F.Layout,',','</X><X>')+'</X>' as XML) as xmlfilter
from @t F
)F1
cross apply
(
select fdata.D.value('.','varchar(MAX)') as splitdata
from f1.xmlfilter.nodes('X') as …Run Code Online (Sandbox Code Playgroud) sql t-sql sql-server sql-server-2005 common-table-expression
考虑以下
empname salary
a 10000
b 5000
c 5000
Run Code Online (Sandbox Code Playgroud)
如果我做 select distinct salary from @t
输出是
salary
5000
10000
Run Code Online (Sandbox Code Playgroud)
它已被排序......为什么这样?