SQL Split函数,将一串字符串返回成table
写法一:
CREATE FUNCTION [dbo].[Split]
(
@str VARCHAR(MAX), --传进来的字符串
@char VARCHAR(2000) --分割符
)
RETURNS @t TABLE --定义一个虚拟表
(
id INT IDENTITY(1, 1),
NAME VARCHAR(MAX)
)
AS BEGIN
-- 给分割符号@char前后加上 % 即 该字符串在@str里第一次出现的位置,起始值从1开始
-- patindex用法详见:http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263982.html
SET @char = '%' + @char + '%'
IF (PATINDEX(@char, @str) = 0) --如果在@str中没有出现 @char,则直接往虚拟表插入@str
BEGIN
INSERT INTO @t
VALUES
(
@str
)
RETURN
END
ELSE
BEGIN
DECLARE @s VARCHAR(MAX)
SET @s = ''
WHILE (PATINDEX(@char, @str) > 0)
BEGIN
SET @s = SUBSTRING(@str, 0, PATINDEX(@char, @str))
INSERT INTO @t
VALUES
(
@s
)
SET @str = SUBSTRING(
@str,
PATINDEX(@char, @str) + LEN(REPLACE(@char, '%', '')),
LEN(@str) -PATINDEX(@char, @str) + 1
)
END
IF (LEN(@str) > 0 AND PATINDEX(@char, @str) = 0)
BEGIN
INSERT INTO @t
VALUES
(
@str
)
END
END
RETURN
END
写法二:
CREATE FUNCTION [dbo].[Split]
(
@convertString VARCHAR(MAX) ,
@strSeprate VARCHAR(20)
)
RETURNS @temp TABLE ( NAME VARCHAR(MAX) )
AS
BEGIN
DECLARE @i INT
SET @convertString = RTRIM(LTRIM(@convertString))
SET @i = CHARINDEX(@StrSeprate, @convertString)
WHILE @i >= 1
BEGIN
INSERT @temp VALUES ( LEFT(@convertString, @i - 1) )
SET @convertString = SUBSTRING(@convertString, @i + 1, LEN(@convertString) - @i)
SET @i = CHARINDEX(@StrSeprate, @convertString)
END
IF @convertString <> '\'
INSERT @temp VALUES ( CONVERT(VARCHAR(10), @convertString) )
RETURN
END
用法:SELECT NAME FROM Split('1,2,3,4,5,6,7,8,9,10',',')
结果:

SQL Split函数,将一串字符串返回成table的更多相关文章
- 【SQL】sql版Split函数。用于拆分字符串为单列表格
功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环 ...
- bitMap算法实现以及ckHash函数类,将字符串映射成数字,同时可以将数字映射成字符串
ckHash函数类,将字符串映射成数字,同时可以将数字映射成字符串 说明 1.所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来 ...
- oracle pl/sql split函数
在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作. 以java开发为例: 前台传入字符串拼接形式的一个JSON数据,如:"1001,1002,1003",这可能代表了一组序号 ...
- Sql Server函数全解<一>字符串函数
阅读目录 1.ASCII()函数 2.CHAR()函数 3.LEFT()函数 4.RIGHT()函数 5.LTRIM()函数 6.RTRIM()函数 7.STR()函数 8.字符串逆序的函数REVER ...
- Sql Server函数全解(一)字符串函数
字符串函数用于对字符和二进制字符进行各种操作 1.ASCII()函数 ASCII(character_expression)函数用于返回字符串表达式中最左侧的ASCII代码值.参数character ...
- sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表
USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9 ...
- 自定义 sql Split函数 / 自定义mp_helptext查看存储
1. 分割函数: --Split 表函数将一个字符串按指定分隔符进行分割,返回一个表. create function split( ),--待分割字符串 )--分割符 ))) as begin ) ...
- SQL Server通过函数把逗号分隔的字符串拆分成数据列表的脚本-干货
CREATE FUNCTION [dbo].[Split](@separator VARCHAR(64)=',',@string NVARCHAR(MAX)) RETURNS @ResultTab ...
- Java 的 String.split 函数,消除空字符串
代码: String str = "the music made it hard to concentrate"; String delims = "[ ]+" ...
随机推荐
- Codeforces Educational Round 21
A =w= B qwq C wvw D(multiset) 题意: 有n(n<=1e5)个数,希望通过把一个位置y的数字放到位置x上这个操作,使得新序列的某个前缀和等于总和的一半,问这样的操作是 ...
- ios截屏事件监听
目的:实现截屏反馈,类似支付宝的截屏上传反馈功能. 1.注册全局通知,在Appdelegate中注册截屏监听通知 - (void)registNotification{ [[NSNotificatio ...
- vsftpd.conf案例
1. 匿名服务器的连接(独立的服务器) 在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:Anonymous_enable=yes (允许匿名登陆)Dirmessage_enab ...
- python可变參数调用函数问题
一直使用python实现一些想法,近期在使用python的过程中出现这样一个需求,定义了一个函数.第一个是普通參数.第二个是默认參数,后面还有可变參数,在最初学习python的时候,都知道非keywo ...
- firewalld 防火墙 nat 网络地址转换
目的:实现以下效果 一. 准备环境 @1 三台虚拟机 @2 client 端 ip 192.168.1.2 server端 两块网卡 , ip 分别是 192.168.1.1 和 ...
- C++入门学习——模板
为什么须要模板? 我们已经学过重载(Overloading),对重载函数而言,C++ 通过函数參数(參数个数.參数类型)的正确匹配来调用重载函数.比如.为求两个数的最大值,我们定义 max () 函数 ...
- 通讯编程入门--WEBSOCKET
C#通讯编程入门--WEBSOCKET WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System ...
- MFC中按下Buttonbutton,弹出一个窗体的同一时候关闭本窗体
CMyDlg *dlg = new CMyDlg(); //新建一个CMyDlg对象 this->ShowWindow(SW_HIDE); ...
- js 判断手机横竖屏的实现方法(不依赖任何其他库)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 动态代理3--Spring AOP分析
Spring AOP的基本实现方式 Spring AOP,一种模块化机制,能够动态的对切点添加行为,而不破坏原有的代码结构. 这是一个非常好地动态代理的应用方式.Spring AOP实现依赖于JDK ...