利用SQLServer列拆分轻松实现字符串分割(sqlserver列拆分)
有时我们需要从字符串中提取多个片段,可以使用列拆分功能来轻松的实现字符串的分割,免去繁琐的`SUBSTRING`和`CHARINDEX`函数的组合。这篇文章将会一探究竟,展示如何利用SQLServer来实现字符串的分割功能。
#### 拆分字符串
这里使用示例表来模拟一个真实的应用场景,列 _Strs_ 中有一个字符串列表,每一行字符串记录了随机生成的4个单词,每个单词之间是由逗号分割的。
`sql
CREATE TABLE #Strs
(
Str nvarchar(120)
)
```sqlINSERT INTO #Strs
VALUES ("ORANGE,DOG,MILK,MATCHA"), ("APPLE,CAT,SOY,BANANA"),
("BLACK,TIGER,TEA,STRAWBERRY")
此时,我们将会遇到的问题就是将以上的字符串取出每一个单词(不包括逗号),形成一张新的表,如下:
![image](https://static001.geekbang.org/resource/image/06/ableeditor/20200503180912_cqufkv.png)
涉及到这样的问题,我们经常会采用 `SUBSTRING` 和 `CHARINDEX` 等函数协同工作,例如下方代码:
`sql
WITH SubStr AS
(
SELECT Str,
SUBSTRING(Str,1,CHARINDEX( , ,Str)-1)WORD1
FROM #Strs
)
SELECT Str,
WORD1,
SUBSTRING(Str, CHARINDEX( , ,Str)+1,
CHARINDEX( , ,SUBSTRING(Str,CHARINDEX( , ,Str)+1,LEN(Str))) -1)
AS WORD2
FROM SubStr
可以看出,使用最普通函数来处理字段分割问题的话,一定会面临到比较复杂的情况,加上循环嵌套等操作,代码犹如野兽一样复杂而又难以控制。
因此,可以利用SQLServer的列分割功能,将上述的复杂代码进行简化,例如如下的一小段代码:
```sqlSELECT Str,
WORD1, Value as WORD2
FROM #StrsCROSS APPLY
( SELECT Value
FROM dbo.splitStr(Str,",") WHERE NumericPosition = 2
) S
这里,我们在 `LINE 10` 使用了 _dbo.splitStr_ 函数,可以将一行字符串拆分成不同列,表示拆分结果。
此函数可以根据分隔符 `,` 将一行字符串拆分成不同量组,每个数据列后面加上一个虚拟偏移量,从 `1` 开始往上排列,在这里分别是 `WORD1` 和 `WORD2`。
最后,当拆分完成后,就可以得到目标分割表的结果
结论:使用列拆分功能可以有效轻松的实现字符串的分割,替代传统的 `SUBSTRING` 和`CHARINDEX` 等函数,减少复杂而又难于控制的循环嵌套操作,以更简便的方式实现字符串的拆分。
利用这一点,就可以轻松地处理一些常规的分割功能,例如将地址按省市区拆分,或将用户输入的组合参数的字符串进行拆分等……等各种场景下的应用体验提升。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 利用SQLServer列拆分轻松实现字符串分割(sqlserver列拆分)
相关文章
- 使用SQLServer客户端工具轻松实现数据库管理(sqlserver客户端工具)
- SQL Server 拼接技巧:实现高效查询(sqlserver拼接)
- SQLserver中的锁:彻查、防范、利用(sqlserver锁)
- Efficient Paging in SQLServer Optimizing your Query Performance(sqlserver分页)
- 电脑上搭载SQL Server,快速实现数据管理(电脑sqlserver)
- 利用微型SQLServer提升企业的数据库运算能力(微型sqlserver)
- 大数据时代,SQLServer稳走高耀(大sqlserver)
- 从图片存入SQLServer:一步一步实现!(图片存sqlserver)
- 医院信息管理转型——SQLServer数据库实现(医院sqlserver)
- 在SQLServer中实现事务处理的流程(事务 sqlserver)
- 备份持续保障业务安全:利用SQLserver零点备份(sqlserver零点)
- 使用SqlServer管理数据规划实现智能化运营(sqlserver 计划)
- 解决SQLServer中的死锁问题(sqlserver解死锁)
- 台设计使用SQLServer前端设计实现数据可视化(sqlserver编辑前)
- SqlServer实现累加运算的技术细节(sqlserver 累加)
- 掌握SQLServer:实现技术目标(sqlserver 目标)
- 从SQLServer创建新的登录名!(sqlserver登陆名)
- 利用SQLServer运算总和,实现快捷高效的统计(Sqlserver总和)
- SQL Server快速高效地回档,实现数据备份(sqlserver回档)
- SQLServer数据库合并:实现数据库的最大管理效率(sqlserver合并)
- SQLServer数据库中取小数的技术实现(sqlserver取小数)
- 利用SqlServer轻松完成单位信息管理(sqlserver 单位)
- 性SQL Server支持兼容性实现无缝迁移(sqlserver兼容)
- 如何使用SQLServer实现分页查询(sqlserver做分页)
- 新增:SQL Server:如何轻松实现新功能(sqlserver 今日)
- 分库SQLserver实现亿级数据库分库管理(sqlserver 亿级)
- SQL Server 监控:提高数据库运行效率(sqlserver监听)
- sqlserver存储过程动态参数调用实现代码