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 = "[ ]+" ...
随机推荐
- HDU 1754_I Hate It
[题意]给定区间求最大值 [分析]线段树单点更新 [代码] #include<cstdio> #include<iostream> using namespace std; c ...
- Delphi:校验手机号及身份证号
//校验手机号 function IsMobileNumber( num:string ):boolean; begin Result:=False; if length( tr ...
- Ubuntu 16.04安装Markdown编辑器MarkMyWords
继上一篇文章http://www.cnblogs.com/EasonJim/p/7119345.html中使用Sublime Text 3进行Markdown的编辑,总觉得操作上比较繁琐,现在推荐使用 ...
- mvnw是什么(Maven Wrapper/Maven保持构建工具版本一直的工具)
背景 Maven是一款非常流行的Java项目构建软件,它集项目的依赖管理.测试用例运行.打包.构件管理于一身,是我们工作的好帮手,maven飞速发展,它的发行版本也越来越多,如果我们的项目是基于Mav ...
- html自动换行
对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行html css 1.(IE浏览器)连续的英文字符和阿拉伯数 ...
- sql 按中文排序
sql server:select * from [表名]order by [字段],[字段] collate Chinese_PRC_CS_AS_KS_WS mysql:select * from ...
- 利用Python爬虫实现百度网盘自动化添加资源
事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...
- 建立DHCPserver
一.实验的目的: 实现以下的要求的DHCPserver,了解子网内的IP分配的情况. 二.实验目标 虚拟机 vm1:192.168.6.3/24属于子网VMnet8. 在其上建立DHCPser ...
- MapReduce WordCount Combiner程序
MapReduce WordCount Combiner程序 注意使用Combiner之后的累加情况是不同的: pom.xml <project xmlns="http://maven ...
- HDU 4869 Turn the pokers (2014多校联合训练第一场1009) 解题报告(维护区间 + 组合数)
Turn the pokers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...