【问题标题】:Split a long string into an array of shorter strings in SQL在 SQL 中将一个长字符串拆分为一组较短的字符串
【发布时间】:2019-01-25 19:40:37
【问题描述】:

SQL 查询?

我有一个包含不同长度字符串的表格列。例如 abcd, abcde, fghijk

现在我想从该列中获取所有不同的 4 个长字符串。

然后输出:

abcd, bcde, fghi, 吉吉, 嗨,

谢谢

【问题讨论】:

  • 这在 T-SQL 中是非常痛苦的,因为它缺乏复杂的字符串处理。 2016 年才添加了方便地使用分隔符拆分字符串;仍然没有实现将字符串拆分为字符。我期待看到人们想出什么,但请注意,这是您几乎肯定想用一种​​体面的编程语言在数据库之外解决的问题。如果字符串变大,几乎没有解决方案能够正确扩展。
  • 你是说你想要一个包含所有长度为 4 个字符的字符串的不同列表吗?
  • abcd, abcde, fghijk的值是单行还是三行?
  • 谢谢。输出值位于单独的行中。

标签: sql-server


【解决方案1】:

您可以使用数字表。

下面使用master..spt_values 进行演示,但您应该创建一个专用的

WITH Nums
     AS (SELECT number
         FROM   master..spt_values
         WHERE  type = 'P'
                AND number BETWEEN 1 AND 1000)
SELECT DISTINCT SUBSTRING(YourCol, Number, 4)
FROM   (VALUES('abcd'),
              ('abcde'),
              ('fghijk'))YourTable(YourCol)
       JOIN Nums N
         ON Number BETWEEN 1 AND LEN(YourCol) - 3

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2013-05-28
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多