[原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据
我们日常开发过程中,非常常见的一种需求,把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。
在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这种方式转变一下也是可以实现的,但是我这里有以前我一直使用的另外一种方式,也记录一下吧。
依照惯例,我们首先来看看效果。
调用:SELECT Id FROM [Fn_StringSplitToTable]('1,12,36,65,58,56,DF',',')
具体函数如下:
-- =============================================
-- 调用:SELECT Id FROM [Fn_StringSplitToTable]('1,12,36,65,58,56,DF',',')
-- Create date: <Create Date,,>
-- Description: 把用逗号分隔的字符串转换成表格数据
-- =============================================
CREATE FUNCTION [dbo].[Fn_StringSplitToTable]
(
@StringX varchar(MAX),
@Split nvarchar(10)
)
RETURNS
@IdsTable TABLE
(
[Id] nvarchar(200)
)
AS
BEGIN
DECLARE @Index int
DECLARE @LenIndex int
SET @LenIndex=LEN(@Split)
SET @Index=CHARINDEX(@Split,@StringX,1)
WHILE (@Index>=1)
BEGIN
IF(LEFT(@StringX,@Index-1) <> '')
INSERT INTO @IdsTable SELECT LTRIM(RTRIM(LEFT(@StringX,@Index-1)))
SET @StringX=RIGHT(@StringX,LEN(@StringX)-@Index-@LenIndex+1)
SET @Index=CHARINDEX(@Split,@StringX,1)
END
IF(@StringX<>'') INSERT INTO @IdsTable SELECT LTRIM(RTRIM(@StringX))
RETURN
END以上调用是用逗号隔开,如果您的字符串是用/号隔开,直接修改调用字符串就行了。
-- 调用:SELECT Id FROM [Fn_StringSplitToTable]('1/12/36/65/58/56/DF','/')
如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。
PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。
[原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据的更多相关文章
- [原创]SQL 表值函数:获取从今天计算起往前自定义天数
		PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好. 在我开发过程中,遇到一个统计需求,结果是要求返回从当天起往回推算出自定义输入的天数 为此我写了一个表值函数 ... 
- [原创]SQL表值函数:获取从当月计算起往前自定义月份数
		今天我现在发现看一篇博文不能够太长,只要能够描述清楚自己想表达的东西,能够让大家知道你要讲什么就行了.因为我今天看了一些长篇博文,真的觉得知识点太多了, 会让人囫囵吞枣. 这篇博文跟我昨天发表的类 ... 
- 逗号分隔的字符串转成表格参与IN条件查询
		返回值为'1,2,3,4,5,6,7',是一个字符串,如果要用IN 查询的话sql认为这是一个完整的字符串,需要将内容分隔转换变成table 定义函数如下: create Function sysfS ... 
- [原创]SQL表值函数:返回自定义时间段的日期数据
		跟以往类似,我依旧介绍一个我日常开发遇到的知识点,谨此记录一下,也希望能帮助到一些朋友. 这次我要介绍的是通过SQL函数返回你输入的两个时间点内的日期数据. 效果图如下: 执行函数:SELECT * ... 
- [原创]SQL表值函数:返回从当前周开始往回的自定义周数
		一如往常一样,一篇简短博文记录开发过程中遇到的一个问题.初衷都是记录自己的一些Idea,也是希望能够帮助一些凑巧遇到此类需求的问题,这个需求的的开端是因为,要统计最近N周的销售数据. 接下来我们来看看 ... 
- SQL Split函数,将一串字符串返回成table
		写法一: CREATE FUNCTION [dbo].[Split] ( @str VARCHAR(MAX), --传进来的字符串 ) --分割符 ) RETURNS @t TABLE --定义一个虚 ... 
- [转]在Sql Server中将字符串分割成表格数据示例
		本文转自:http://www.lmwlove.com/ac/ID718 比如我们有一个字符串 ) select @appName ='UserID=admin,Account=ABC' 然后我们要以 ... 
- 把以逗号分隔的字符串转换成list
		/** * 把省的字符串转换成列表 * * @param province * @return */ private List<String> getProvinceList(String ... 
- SQL表值函数和标量值函数的区别
		SQL表值函数和标量值函数的区别 写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的, ... 
随机推荐
- Java多线程系列  JUC线程池01  线程池框架
			转载 http://www.cnblogs.com/skywang12345/p/3509903.html 为什么引入Executor线程池框架 new Thread()的缺点 1. 每次new T ... 
- python中filter()函数
			filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filt ... 
- my.cnf重要配置参数说明
			不同存储引擎中关键参数优化 MyISAM存储引擎 MyISAM存储引擎适用于读多写少,对读性能要求比较高的系统 官方文档:http://dev.mysql.com/doc/refman/5.6/en/ ... 
- slam kf
			一.KF 1.从概率来理解概率估计因为希望整个运动估计较长时间内最优,所以反而会用最新的知识去更新之前的状态,就比如在做完当前帧的位姿估计的时候,修改局部地图的路标点.如果站在之前的状态上来考虑,用的 ... 
- in型子查询陷阱,exists子查询
			in 型子查询引出的陷阱 select goods_id from goods where cat_id in (1,2,3) 直接用id,不包含子查询,不会中陷阱 题: 在ecshop商城表中,查询 ... 
- mysql备份,知识点
			1.mysql错误日志 show variables like '%log_error%'; my.cnf中log-error=/tmp/SZDB.err 开启 tail -f 错误日志 观察mys ... 
- 剑指offer之 从上往下打印二叉树
			import java.util.ArrayList; import java.util.LinkedList; /** public class TreeNode { int val = 0; Tr ... 
- 分享知识-快乐自己:解决 Maven 无法下载 fastdfs-client-java 依赖。
			因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在maven中央仓库是没有的. 需要自己编译源码成jar本地安装到maven 的本地仓库,安装完以后就能正常引用 ... 
- Geoserver端口冲突解决方案(二)
			转载:https://blog.csdn.net/sx341125/article/details/52091903 上一篇文章说了GeoServer的安装问题,其中一个问题就是GeoServer端口 ... 
- PHP 使用header函数设置HTTP头的示例解析 表头
			PHP 使用header函数设置HTTP头的示例解析 表头 //定义编码 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header ... 
 
			
		