【发布时间】:2018-08-31 15:55:00
【问题描述】:
我有如下字符串
Declare @string ='welcome'
我想要这样的输出
w
e
l
c
o
m
e
【问题讨论】:
-
什么样的输出?调试打印或返回的字符串?还是别的什么?
标签: sql sql-server
我有如下字符串
Declare @string ='welcome'
我想要这样的输出
w
e
l
c
o
m
e
【问题讨论】:
标签: sql sql-server
您可以为此使用计数表,通常比循环更快,但您必须自己测试:
declare @s varchar(200)
set @s = 'Welcome'
;with t as (
select v
from (values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t(v)
),
n as (
select row_number() over(order by (select null)) rn
from t t1 cross join t t2
)
select substring(@s, rn, 1)
from n
where rn <= len(@s)
【讨论】:
DECLARE @string VARCHAR(256) = 'welcome'
DECLARE @cnt INT = 0;
WHILE @cnt < len(@string)
BEGIN
SET @cnt = @cnt + 1;
PRINT SUBSTRING ( @string ,@cnt , 1 )
END;
本质上,您循环遍历字符串的长度。 您在循环索引的位置打印字符并打印它。
【讨论】:
你可以使用递归 CTE。
Declare @string varchar(10) ='welcome'
;with cte as
(
select 1 as i,substring(@string,1,1) as single_char
union all
select i+1 as i,convert(varchar(1),substring(@string,i+1,i+1)) as single_char from cte where len(convert(varchar(1),substring(@string,i+1,i+1)))=1
)
select single_char From cte
【讨论】: