SQL Server自定义字符串分割函数——Split
我相信大部分人都碰到过,处理数据的时候,字段的值是以 ',' (逗号)分隔的形式,所以我也不能避免。
然后我才知道,sql 是没有类似于 C# 和 Javascript 这种分割字符串的方法。( Split )
所以我自己定义了一个 sql 函数(多声明表值函数),代码如下:
1 USE [Test] 2 GO 3 /****** Object: UserDefinedFunction [dbo].[Split] Script Date: 2017/4/14 23:04:08 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 CREATE FUNCTION [dbo].[Split](@separator VARCHAR(64)=',',@string NVARCHAR(max)) 9 RETURNS @ResultTab TABLE ( 10 Id INT , 11 Res NVARCHAR(500) 12 ) 13 AS 14 BEGIN 15 DECLARE @Num INT 16 17 IF(@string IS NOT NULL AND @string <> '' AND LEN(@string)>0) 18 BEGIN 19 IF(CHARINDEX(@separator,@string)>0) --判断要截取的字符是否存在 20 BEGIN 21 SET @Num=0 22 WHILE (CHARINDEX(@separator,@string)>0) --如果要截取的字符存在,就继续循环 23 BEGIN 24 SET @Num=@Num+1 25 26 INSERT INTO @ResultTab(Id,Res) --截取字符串,插入表变量 27 SELECT @Num,LEFT(@string,CHARINDEX(@separator,@string)-1) 28 29 --把已经截取并插入的字符串删除 30 SET @string=STUFF(@string,1,CHARINDEX(@separator,@string)-1+LEN(@separator),'') 31 END 32 33 --如果最后一个截取的字符串为空,那就不插入了 34 --例如:'123,456,789,' 这样的字符串最后剩下的就是空字符串了 35 IF(@string IS NOT NULL AND @string <> '') 36 BEGIN 37 INSERT INTO @ResultTab(Id,Res) 38 SELECT @Num+1,@string 39 END 40 END 41 ELSE 42 BEGIN 43 DELETE FROM @ResultTab 44 END 45 END 46 ELSE 47 BEGIN 48 DELETE FROM @ResultTab 49 END 50 RETURN 51 END
下面来调用一下试试效果:
1 --因为这个函数创建的时候默认为以 逗号 分割,所以只需要使用 default 关键字就可以了 2 select * from Split(default,'123,456,789') 3 4 select * from Split(default,'123,456,789,') 5 6 --下面试试其它字符分割 7 select * from Split('abc','11111abc22222abc33333') 8 9 select * from Split('abc','11111abc22222abc33333abc')
不足的地方就是不能直接作用于表,和不能同时支持多字符分割。
当然,如果多定义几个参数,也是勉强可以的,不过我想的是能够和 C# 那种可以传入一个分割字符的数组,不过貌似 sql 自定义函数的参数不支持 table 类型。
另外,如果有什么好的想法,可以探讨一下。多谢~
转载于:https://www.cnblogs.com/Brambling/p/6711413.html
SQL Server自定义字符串分割函数——Split相关推荐
- c语言将字符串按空格分割_如何在c++中实现字符串分割函数split详解
前言 在学习c++中string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割, ...
- C++实现字符串分割函数split()
目录 使用strtok()完成分割 使用strsep()完成分割 使用strtok_r()完成分割 实现字符串分割 前言 最近遇到了一个字符串分割的问题,在C++的标准库里面没有字符分割函数split ...
- c语言中字符切割函数split,c 语言 指针 C语言字符串分割函数split实现
c语言也有类似其他语言的split字符串分割函数,就是strtok使用方法如下://用逗号做分隔符,读出内容//char s[] = "123-sldkf-123ls-343434-dfjd ...
- C++中string如何实现字符串分割函数split()——4种方法
如: string str1 = "This is a test"; string str2 = "This-is-a-test"; string str2 = ...
- SQL Server中字符串处理函数
SQL Server中截取字符串常用函数 截取字符串中的最后一个斜杠后的所有字符: SELECT A.PIC_URL, RIGHT(A.PIC_URL,(CHARINDEX('/',REVERSE(A ...
- Sql server 分解字符串(实现split)
在sql server 中实现分解字符串的方法的脚本如下:create Function [dbo].[fn_SplitStr] (@SourceSql VARCHAR(max), -- 字符串@St ...
- Java字符串分割函数split
Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: 1.split 方法 将一个字符串分割为子字符串,然后将 ...
- java对于 进行字符串分隔_Java字符串分割函数split中以·点分割的问题
问题描述: // 把字符串"192.168.1.1"按照小圆点进行分割,分割成"192","168","1"," ...
- 中统计字符串长度的函数_SQL Server中的字符串分割函数
您是否知道从SQL Server 2016开始,系统就内置STRING_SPLIT函数,该函数用于将字符串分隔的变量拆分为一个可用列表. 对于经常需要分割字符串的技术人员,建议您查看此功能. STRI ...
最新文章
- 量子计算机人类意识云,意识上传-人类距离永生还要多久(大脑的工作原理很有可能与量子计算机一致)...
- 2、使用rpm包安装grafana
- LIKE语句也可以这样写
- 亚马逊:自动选择AI模型,进化论方法效率更高!
- PLSQL Developer使用大全
- ANT简明教程[转载]
- Semantic Web 文章目录
- SAP License:SAP中的默认帐户与密码应用
- RabbitMQ-AMQP术语介绍
- iPhone NavigationBar和UIToolbar基础
- mysql在linux下的完整安装
- 2015.5.29日总结
- 系统安全之数据加密解密
- matlab中TCR触发,TCR+FC型SVC的研究及MATLAB仿真
- android开发点击版本号多次无法进入开发者模式模式
- 【脑洞大开】从哲学角度看人工智能:介绍徐英瑾的《心智、语言和机器》
- 测试工作中比较好用的几款对比工具
- 现代金融业务--计算题合集(自用,quiz的解答瞎写的)
- creator中关于旋转所使用的欧拉角和四元数
- 基于RocketMQ设计秒杀
热门文章
- java 异常 理解_java中的异常理解
- 炫界 (587) -(牛一邓丽君音)_50音起源 for mac(日语五十音学习软件)
- python常考题_python面试总结2(函数常考题和异常处理)
- cuda合并访问的要求_CUDA优化的冷知识 5 | 似是而非的计时方法
- 2022年春季学期课程基本信息总汇
- 基于AD5272多组变阻器电路设计
- VMware虚拟机提示在该系统上全局禁用了虚拟机打印功能
- c语言 json 请求_怎么用C语言获取JSON中的数据?
- java 使用http2.0_【Java】okhttp3如何发送http2请求?
- 二维随机变量期望公式_MIT 6.041 概率论笔记 离散随机变量(二)