sql - sql 在一定长度的字符后拆分为新行
问题描述
我在其中一列中有记录,如下所示:
132007700013213860001321264000
我想在不使用任何基于 char 长度 10 的分隔符的情况下进行拆分。每 10 个字符后,我需要在新行中记录。像下面
1320077000
1321386000
1321264000
解决方案
如果字符串是固定宽度的,您可以使用 3 个 SUBSTRING 函数和 CROSS APPLY 将 3 列“取消旋转”为 1 列,称为“new_col”。
declare @txtTable table(txt char(30) not null)
insert @txtTable(txt) values
('132007700013213860001321264000'),
('999999999999999999999999999999');
select u.*
from @txtTable t
cross apply (values (substring(t.txt, 1, 10),
substring(t.txt, 11, 10),
substring(t.txt, 21, 10))) v(c1, c2, c3)
cross apply (values (v.c1),(v.c2),(v.c3)) u(new_col);
new_col
1320077000
1321386000
1321264000
9999999999
9999999999
9999999999
推荐阅读
- c# - 从 Xamarin Forms C# 中的 API 使用 html 内容
- php - 返回 PHP 的多维数组值
- php - 尝试通过 Composer 在 Windows 上安装 laravel/创建 laravel 项目时出错
- c++ - 在 C++ 目标中设置源文件名
- gerrit - 如何使用 API 丢弃关于 gerrit 的草稿评论?
- python - dtreeviz 替换绘图,回归太多点
- android - 使用 Coordinator 布局时,SnackBar 显示在某个高度之上
- python - 使用 Google Adword API 时收到此错误 OperatorError.OPERATOR_NOT_SUPPORTED @ operations[0]
- algorithm - 找到这样一种方式,即在途中跳跃的最大距离可能是最小的
- css - 隐藏在 Accordion bootstrap 后面的 react-datetime