sql - SQL Server 中的字符串值移位
问题描述
不知道如何清楚地描述我想要实现的目标,希望我下面的问题确实有意义。
假设我有字符串ABCDE
。我想迭代其长度的次数以创建字符串的移位模式,如下图所示
_BCDE
, A_CDE
, AB_DE
, ABC_E
,ABCD_
所以我想在所有可能的位置创建所有带有下划线的组合,以便在查询中使用它们
DECLARE @WORD AS NVARCHAR(50)
SET @WORD = 'ABCDE'
SELECT position = PATINDEX(CONCAT('%', @WORD, '%'), 'BGHKAGCDEBABIDEKFABCREDNBSALCDEOPL');
其中@WORD 应该是带有_
.
我觉得这可以使用递归来完成,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;
这是一个 db<>fiddle。
推荐阅读
- javascript - 以角度检索单个firestore文档
- r - gsub 不适用于字符串 - 提示可能出错的地方
- cakephp - 将数据带入编辑视图 Cakephp 3
- python - 如何清除屏幕并恢复到菜单?蟒蛇3.0
- c# - 我的 Unity 项目中没有 AndroidManifest.xml
- java - 为什么我的 Java 应用程序在本地工作,但在交付到 IBM Cloud 时出现此错误
- c++ - 使用给定子字符串将给定字符串转换为回文
- batch-file - 带有 if 语句的多个可能的文本输入
- html - 初学者HTML:
- android - 从回收站视图和 Firebase 中删除行