將字串按指定的分割分成多條記錄,返回table的記錄
2007-12-04 09:46
267 查看
/*
將字串按指定的分割分成多條記錄,返回table的記錄
調用方法:
select * from dbo.f_division_string('a,bc,dd,e,f,daf,eee',',')
*/
CREATE FUNCTION dbo.f_division_string
(
@str VARCHAR(4000) --所要分割字串
,@separate VARCHAR(100) --分割符
)
RETURNS @return_table TABLE --自訂的多表值變數,用於返回記錄集
(
idx INT --返回結果集的索引位置
,str_name VARCHAR(100) --分割後的字串值
)
AS
BEGIN
DECLARE
@count INT --迴圈次數
,@separate_len INT --分割符的長度
,@pos INT --迴圈所用的次數變數
,@separate_pos INT --每次分割的分割符所在當前的位置
SET @str=LTRIM(RTRIM(@str))
SET @separate_len=LEN(@separate)
IF RIGHT(@str,@separate_len)=@separate
BEGIN
SET @str=LEFT(@str,LEN(@str)-@separate_len)
END
SET @count=(LEN(@str)-LEN(REPLACE(@str,@separate,'')))/@separate_len
SET @pos=1
WHILE(@pos<=@count) --進行迴圈插入記錄
BEGIN
SET @separate_pos=CHARINDEX(@separate,@str)
INSERT INTO @return_table(idx,str_name)
VALUES(@pos,SUBSTRING(@str,1,@separate_pos-1))
SET @pos=@pos+1
SET @str=RIGHT(@str,LEN(@str)-@separate_pos-@separate_len+1) --將提取出來的字串在原有的字串上截取
END
INSERT INTO @return_table(idx,str_name) --插入最後一條記錄值
VALUES(@pos,@str)
RETURN
END
將字串按指定的分割分成多條記錄,返回table的記錄
調用方法:
select * from dbo.f_division_string('a,bc,dd,e,f,daf,eee',',')
*/
CREATE FUNCTION dbo.f_division_string
(
@str VARCHAR(4000) --所要分割字串
,@separate VARCHAR(100) --分割符
)
RETURNS @return_table TABLE --自訂的多表值變數,用於返回記錄集
(
idx INT --返回結果集的索引位置
,str_name VARCHAR(100) --分割後的字串值
)
AS
BEGIN
DECLARE
@count INT --迴圈次數
,@separate_len INT --分割符的長度
,@pos INT --迴圈所用的次數變數
,@separate_pos INT --每次分割的分割符所在當前的位置
SET @str=LTRIM(RTRIM(@str))
SET @separate_len=LEN(@separate)
IF RIGHT(@str,@separate_len)=@separate
BEGIN
SET @str=LEFT(@str,LEN(@str)-@separate_len)
END
SET @count=(LEN(@str)-LEN(REPLACE(@str,@separate,'')))/@separate_len
SET @pos=1
WHILE(@pos<=@count) --進行迴圈插入記錄
BEGIN
SET @separate_pos=CHARINDEX(@separate,@str)
INSERT INTO @return_table(idx,str_name)
VALUES(@pos,SUBSTRING(@str,1,@separate_pos-1))
SET @pos=@pos+1
SET @str=RIGHT(@str,LEN(@str)-@separate_pos-@separate_len+1) --將提取出來的字串在原有的字串上截取
END
INSERT INTO @return_table(idx,str_name) --插入最後一條記錄值
VALUES(@pos,@str)
RETURN
END
相关文章推荐
- 写一个函数,用来把一个字符串用指定的字符作为分隔符分割成若干个子串输出 | 写一个函数,用来返回一个字符串中重复出现的最长字串的长度及其开始地址
- 2011-10-31---删除一个字符串指定的字串,并返回字串的个数
- (原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(5): 返回指定表格中的所有键(key):table.keys
- SQL:将字符串以特定字符分割并返回Table
- 华为:删除一个字符串指定的字串,并返回字串的个数
- 分割字符串到数组/替换字符串/返回指定字节长度的字符串/判断是否为浮点数,包括double和float/email判断/是否纯汉字判断/空白判断
- 按指定分隔符分割数据与从字符串指定位置返回子字符串
- Lua 用指定字符或字符串分割输入字符串,返回包含分割结果的数组
- sql按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
- 看到返回TABLE的函数,还有不错的分解字串。
- SQL 创建函数的样例(按指定的符号分割字符串,并返回临时表)
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- MongoDB GridFS——本质上是将一个文件分割为大小为256KB的chunks 每个chunk里会放md5标识 取文件的时候会将这些chunks合并为一个整体返回
- iOS 在App内返回到指定页面
- 获取以指定分割符分割的字符串
- 用JavaScript,获取Table中指定的行、列
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 根据指定要求分割字符串
- php中将数组转换为指定符号分割的字符串
- SQL Server 求指定日期的上季尾日的起始点(比如入参日2016-06-30,返回 2016-03-31 00:00:00.000)