博客
关于我
SQL Server不用创建函数,实现Split函数指定分隔符分割以及判断是否为整数
阅读量:543 次
发布时间:2019-03-07

本文共 1461 字,大约阅读时间需要 4 分钟。

一、SQL Server字符串按指定分隔符分割

在处理存储казensi或其他存储解决方案时,我们经常需要将存储在同一字段中的多个值进行拆分。常见的场景是,在文本中使用分隔符进行数据存储,如"姓名/电话"、"日期,时间,地点"等。因此,如何有效地拆分这类字符串,而不需要编写复杂的函数,是一个值得关注的问题。

对于分隔符为"/"的传统拆分需求,可以利用SQL Server的CHARINDEX函数来实现。虽然某些教程会建议创建自定义函数或使用第三方工具,但使用CHARINDEX的力量,原本就可以轻松完成这个任务,不需要编写任何函数代码。

CHARINDEX函数的基本用法如下:

CHARINDEX ( 运算式1 , 表达式2 [ , 起始位置 ] )

  • 运算式1:指定要寻找的字符。
  • 表达式2:在该表达式中寻找指定字符的字符串。
  • 起始位置(可选):确定查找起始位置,默认从字符串开头开始查找。

举例说明:

假设,我们有字段info,字段值可能如"张三/137-1234-5678"或"李四/189-4444-8888"。如果我们希望将信息拆分为姓名和电话,可以直接使用以下T-SQL语句:

SELECT LEFT([info], CHARINDEX('/', [info]) - 1) AS 姓名,       RIGHT([info], LEN([info]) - CHARINDEX('/', [info])) AS 电话FROM #test

结果显示,姓名和电话会被分割到不同的字段中,并且键位位置的逻辑处理会更清晰。

对于支持多个分隔符拆分的情况,例如姓名,电话等,我们可以使用STRING_SPLIT函数。这种方法特别有用,因为无需关心分隔符的数量。

举例说明:

假设我们有字段names,其值可能为"李四, 张三, 王五"。我们可以使用STRING_SPLIT函数将其拆分为多个字段:

SELECT groupname, valueFROM #testCROSS APPLY STRING_SPLIT(names, ',')

这样,每一行的value字段都会分别对应单个名字。

二、判断字段是否为整数

对于需要验证字段是否为整数的场景,可以利用PATINDEX函数来实现。这种方法简单且高效,因为它允许我们指定特定的模式优先级,以快速判断字段的格式是否符合整数格式。

PATINDEX函数的基本用法如下:

PATINDEX ( '%模式%' , 表达式 )

  • 模式:一个字符串,描述我们希望匹配的字符模式。
  • 表达式:需要检查的字符串。

举例说明:

假设我们有字段info,其值可能是"123"、"abc"、"123,abc"、"12.3"等。我们可以使用以下T-SQL语句判断其是否为整数:

SELECT info,        CASE            WHEN PATINDEX('%[^0-9]%', info) = 0 THEN '整数'           ELSE '非整数'       END AS 是否为整数FROM #test

此时,PATINDEX('%[^0-9]%', info)返回0,表明整个字符串中没有非数字字符,表示字段全为数字字符,即整数格式。反之,则为非整数。

这种方法简单且灵活,特别适合需要快速判断字段格式的场景。

上述两种方法简单易懂,能够帮助你高效地处理数据分割和格式验证任务,无需编写复杂的函数或脚本。而且,它们的性能表现也不错,能够满足大多数的业务需求。

转载地址:http://jimjz.baihongyu.com/

你可能感兴趣的文章
Nginx的可视化神器nginx-gui的下载配置和使用
查看>>
Nginx的是什么?干什么用的?
查看>>
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NHibernate学习[1]
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>