在SQL中将长字符串拆分为较短字符串的数组

时间:2019-01-25 11:07:29

标签: sql-server

SQL查询?

我有一个表列,其中包含各种长度的字符串。例如 abcd,abcde,fghijk

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

输出为:

abcd, bcde, fghi, ghij, 嗨,

谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用数字表。

以下使用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