sql-server - 如何将 nvarchar 的每 7 个字符提取到另一个表中?
问题描述
我在 Table1 中有一个名为 ColumnA 的 nvarchar(200),其中包含例如值:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
我想将每 7 个字符提取到 Table2 的 ColumnB 中,并最终得到以下所有这些值。
ABCDEFG
BCDEFGH
CDEFGHI
DEFGHIJ
EFGHIJK
FGHIJKL
GHIJKLM
HIJKLMN
IJKLMNO
JKLMNOP
KLMNOPQ
LMNOPQR
MNOPQRS
NOPQRST
OPQRSTU
PQRSTUV
QRSTUVW
RSTUVWX
STUVWXY
TUVWXYZ
[不是真正的表名和列名。]
数据被加载到 SSIS 包中的 Table1 和 Table2 中,我想知道是在 SQL 任务中在 TSQL 中进行字符串处理还是在 VB 脚本组件中解析出字符串更好。
[是的,我认为我们是地球上最后四个在脚本组件中使用 VB 的公司。我无法说服其他三个人相信这个 C# 东西会一直存在。虽然,也许现在是去流氓的最佳时机。]
解决方案
您可以使用递归 CTE 逐步计算偏移量,并且substring()
.
WITH
cte
AS
(
SELECT 1 n
UNION ALL
SELECT n + 1 n
FROM cte
WHERE n + 1 <= len('ABCDEFGHIJKLMNOPQRSTUVWXYZ') - 7 + 1
)
SELECT substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ', n, 7)
FROM cte;
推荐阅读
- android - Firebase 身份验证使用电子邮件/密码匿名签署用户
- ruby - 减少实例方法的数量
- node.js - Browsersync 无法打开浏览器 Heroku
- python - 使用 corr() 方法处理 sklearn 束对象虹膜
- java - 需要帮助阅读文本文件
- apache - 使用未激活 SSL 的 htaccess 强制 http-NOT https
- python - 如何通过 Python 函数运行多个键
- php - 将双精度转换为整数时 PHP 不会产生正确的输出
- python - 如何在 Python 3.x 中使用“locals()”绑定与 exec?
- c - gcc -fstack-protector 不抛出错误