SQL Server中的字符串值转移
不知道如何清楚地描述我想要实现的目标,希望我下面的问题有一定的意义 让我们假设我有ABCDE这个字符串。我想迭代它的长度,以创建字符串的移位模式,如下所示 _BCDE、A_CDE、AB_DE、ABC_E、ABCD_ 因此,我想在所有可能的位置创建带有下划线的所有组合,以便在如下查询中使用它们SQL Server中的字符串值转移,sql,sql-server,cursor,patindex,Sql,Sql Server,Cursor,Patindex,不知道如何清楚地描述我想要实现的目标,希望我下面的问题有一定的意义 让我们假设我有ABCDE这个字符串。我想迭代它的长度,以创建字符串的移位模式,如下所示 _BCDE、A_CDE、AB_DE、ABC_E、ABCD_ 因此,我想在所有可能的位置创建带有下划线的所有组合,以便在如下查询中使用它们 DECLARE @WORD AS NVARCHAR(50) SET @WORD = 'ABCDE' SELECT position = PATINDEX(CONCAT('%', @WORD, '%'), '
DECLARE @WORD AS NVARCHAR(50)
SET @WORD = 'ABCDE'
SELECT position = PATINDEX(CONCAT('%', @WORD, '%'), 'BGHKAGCDEBABIDEKFABCREDNBSALCDEOPL');
其中@WORD应该是带有x的单词
我觉得这可以使用递归CTE来完成,但我不确定如何开始
非常感谢您的帮助。您可以使用递归CTE:
DECLARE @WORD AS NVARCHAR(50);
SET @WORD = 'ABCDE';
with cte as (
select 1 as n, @word as word
union all
select n + 1, word
from cte
where n < len(word)
)
select word, stuff(word, n, 1, '_')
from cte;
是一个dbfiddle。您可以使用递归CTE:
DECLARE @WORD AS NVARCHAR(50);
SET @WORD = 'ABCDE';
with cte as (
select 1 as n, @word as word
union all
select n + 1, word
from cte
where n < len(word)
)
select word, stuff(word, n, 1, '_')
from cte;
是一个dbfiddle。不使用递归CTE的尝试。但在处理大字符串时要小心处理,因为replicate有它自己的特性
不使用递归CTE的尝试。但在处理大字符串时要小心处理,因为replicate有它自己的特性
value permutations
abcde _bcde
abcde a_cde
abcde ab_de
abcde abc_e
abcde abcd_