【问题标题】:Display Sring in vertical manner [duplicate]以垂直方式显示字符串[重复]
【发布时间】:2018-08-31 15:55:00
【问题描述】:

我有如下字符串

Declare @string ='welcome'

我想要这样的输出

w
e
l
c
o
m
e 

【问题讨论】:

  • 什么样的输出?调试打印或返回的字符串?还是别的什么?

标签: sql sql-server


【解决方案1】:

您可以为此使用计数表,通常比循环更快,但您必须自己测试:

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)

【讨论】:

    【解决方案2】:
    DECLARE @string VARCHAR(256) = 'welcome'
    DECLARE @cnt INT = 0;
    
    WHILE @cnt < len(@string)
    BEGIN
        SET @cnt = @cnt + 1;
        PRINT SUBSTRING ( @string ,@cnt , 1 )  
    END;
    

    本质上,您循环遍历字符串的长度。 您在循环索引的位置打印字符并打印它。

    【讨论】:

    • 是的,它工作正常,谢谢你
    • 我有一系列 sting 为 'chennai,mumbai,Bangalore,Hyderabad,pune' - 我想像这样输出 chennai mumbai Bangalore Hyderabad Pune 这个兄弟的逻辑是什么
    【解决方案3】:

    你可以使用递归 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多