微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据长度将单元格中的任何字符串值返回到新行的函数?

如何解决根据长度将单元格中的任何字符串值返回到新行的函数?

现在我有这张桌子:

Names
----------
Bill
James
----------

我的目标是根据长度将这些名称重复插入到新行中。

例如

Names
----------
Bill
Bill
Bill
Bill
James
James
James
James
James

附言我将找出是否有办法仅使用 wherehaving...等过滤器来处理它。

提前致谢。

解决方法

您可以使用递归 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 举报,一经查实,本站将立刻删除。