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 = "[ ]+" ...
随机推荐
- 选择器的使用(empty选择器)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...
- Mybatis中insert中返回主键ID的方法
<insertid=“doSomething"parameterType="map"useGeneratedKeys="true"keyProp ...
- python 进程内存增长问题, 解决方法和工具
转载:http://drmingdrmer.github.io/tech/programming/2017/05/06/python-mem.html#pyrasite-%E8%BF%9E%E6%8E ...
- SSH端口自定义
SSH的服务端口是22,可以定义成其他端口号, / etc/ssh/sshd_config #ssh-server配置文件位于 /etc/init.d/ssh start #重启SSH服务,
- SAP ABAP 的经常使用debug方式
SAP ABAP 的经常使用debug方式: 1. 直接在程序中设断点 在se38里面打上breakpoint,程序执行到该处即进入debug模式 2.background Job的debug 进入S ...
- Linux bash: scp: command not found的问题记录
,总结 scp成功,须要两个server都安装了scp服务才行.
- python 【目录】
python[目录] python[第一篇]初识python python[第二篇]python基本数据类型 python[第三篇]python函数基础
- libsqlite3.dylib与libsqlite3.0.dylib的差别
在我们加入数据库框架时,在搜索框中输入sqlitekeyword,以下列表区会显示libsqlite3.dylib,libsqlite3.0.dylib. 此时我们选择libsqlite3.0.dyl ...
- JavaScript基础 -- ECMAscript
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本 ...
- CPU卡的读写【转】
本文转载自:http://blog.csdn.net/logaa/article/details/7465226 一般来说,对存储卡和逻辑加密卡操作,使用接触式IC卡通用读写器:对CPU卡使用CPU卡 ...