我想用T-SQL来转置一个带有单词的列,比如
t
r
a
i
n
进入
train
我尝试使用枢轴,但不是只用转置列返回一行,而是得到一个 5x5 表,沿对角线显示“火车”,其他地方都为 NULL。这个结果对我来说很有意义,但这不是我想要的。我只想将一个垂直书写的单词转换成同一个单词,但水平书写。我应该如何使用枢轴来解决这个问题?或者有没有更简单的方法可以做到这一点?
相反,如果我从一个词开始
train
我将如何转置这个词以使其垂直打印?
t
r
a
i
n
谢谢!
最佳答案
您可以尝试使用 CTE 递归的一种方法
CREATE TABLE T(
col varchar(50)
);
insert into t values ('train');
;with cte as (
select
1 startIdx,
len(col) maxlenght,
col
from t
UNION ALL
select
startIdx+1,
maxlenght,
col
from cte
where startIdx + 1 <= maxlenght
)
select substring(col,startIdx,1),col
from cte
结果
t
r
a
i
n
如果想让char转置一个单词的列,可以尝试使用FOR XML
create TABLE T2 (c NVARCHAR(1))
INSERT T2 VALUES('t'),('r'),('a'),('i'),('n');
SELECT STUFF((SELECT c FROM T2 FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,0,'')
结果
train
关于sql - 在 SQL Server 中将垂直书写的单词转为水平书写的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53235852/