如何解决根据长度将单元格中的任何字符串值返回到新行的函数?
现在我有这张桌子:
Names
----------
Bill
James
----------
我的目标是根据长度将这些名称重复插入到新行中。
例如
Names
----------
Bill
Bill
Bill
Bill
James
James
James
James
James
附言我将找出是否有办法仅使用 where
、having
...等过滤器来处理它。
提前致谢。
解决方法
您可以使用递归 CTE:
with cte as (
select name,len(name) as n
from t
union all
select name,n - 1
from cte
where n > 1
)
select cte.name
from cte;
Here 是一个 dbfiddle。
,最简单、最高效的方法是使用 numbers/tally table
在此处模拟一个名为 digits
的计数表 - 理想情况下,这将是一个存储从 1 到 bajillion 或任何您需要的数字的永久表。
with digits as (
select * from (values (1),(2),(3),(4),(5))v(n)
),T as (
select 'Bill' [Name] union all select 'James'
)
select t.[Name]
from T
cross apply digits d
where d.n <= Len(T.[name])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。