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 = "[ ]+" ...
随机推荐
- mysql 经常使用命令整理总结
#改动字段类型 alter table `table_name` modify column ip varchar(50); #添加字段 alter table `table_name` add ip ...
- iOS社交分享Twitter、Facebook、拷贝到剪切板、LINE、及邮件
准备 首先要引进例如以下三个framework: MessageUI.framework Social.framework Accounts.framework 并在实现这几个方法的地方引入下面几个头 ...
- JAVA获取操作系统的信息
列出全部信息: Properties prop = System.getProperties(); prop.list(System.out); 获取某个信息: String os = prop.ge ...
- Android--Activity在跳转时携带数据
首先看看两种传递方法演示样例:(一个简单姻缘计算器) 主Activity import android.os.Bundle; import android.app.Activity; import a ...
- easyui报错“Cannot read poperty 'options' of undefined”问题解决方案之一
别逼逼了,我要看解决方法 问题产生原因 最近在项目中使用jquery easyui做页面.其中有个优化问题,我是将原本由jsp通过jstl标签生成的页面改成js通过dom去延迟生成了. 但是js生成的 ...
- iOS项目开发实战——通过Http Get方式与server通信
移动client往往须要同后台server进行通信,上传或者下载数据,最经常使用到的方式就是Http Get,如今我们来学习在iOS项目中使用Get方式同server进行通信. [一]server端实 ...
- 黑马day13 分页思路&实现
分页的总体思想: 分页包含什么: 1.当前页,每页显示的记录数,总的记录数,总的页码,集合List存放的是JavaBean,首页, 尾页,上一页,下一页 传递的參数:当前页,每页显示的记录数.这两个本 ...
- 167. Two Sum II - Input array is sorted (二分ortwo-pointer)
Given an array of integers that is already sorted in ascending order, find two numbers such that the ...
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 C序列变换
链接:https://www.nowcoder.com/acm/contest/91/C来源:牛客网没有账号的同学这样注册,支持博主 题目描述 给定两个长度为n的序列,ai, bi(1<=i&l ...
- P2465 [SDOI2008]山贼集团 dp
这个题是一道树形dp+状压dp二合一,先预处理每种组合会有什么额外的费用,然后在树上dp就行了. 题干: 题目描述 某山贼集团在绿荫村拥有强大的势力,整个绿荫村由N个连通的小村落组成,并且保证对于每两 ...