sql拆分字符串
2010-05-10 17:04
323 查看
一个字符串:‘a|b|c’
想从中提取出来分别放到@a,@b,@c中,问有没有简单的方法实现?
--先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串
(@str nvarchar(2000),--源字串
@sn int, --提取序号
@Deli varchar(1) --分隔符
)
RETURNS varchar(100)
AS
BEGIN
declare @first int,@last int,@result varchar(1000),@sn0 int
select @sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while @sn0!=@sn
begin
select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if @last-@first-1<0
set @result=''
else
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN ( @RESULT )
END
GO
--查询方法:
DECLARE @A VARCHAR(100),@B VARCHAR(100),@C VARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|') ,
@B=DBO.MYSPLIT('A|B|C',2,'|') ,
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT @A,@B,@C
想从中提取出来分别放到@a,@b,@c中,问有没有简单的方法实现?
--先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串
(@str nvarchar(2000),--源字串
@sn int, --提取序号
@Deli varchar(1) --分隔符
)
RETURNS varchar(100)
AS
BEGIN
declare @first int,@last int,@result varchar(1000),@sn0 int
select @sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while @sn0!=@sn
begin
select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if @last-@first-1<0
set @result=''
else
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN ( @RESULT )
END
GO
--查询方法:
DECLARE @A VARCHAR(100),@B VARCHAR(100),@C VARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|') ,
@B=DBO.MYSPLIT('A|B|C',2,'|') ,
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT @A,@B,@C
相关文章推荐
- 妙用 T-SQL: PARSENAME 函数 (也可不使用该函数,鸣谢"小杰") 实现按指定分隔符拆分字符串 SplitString
- SQL字符串处理--按分割符拆分字符串T-SQL to Split a varchar into Words
- SQL--字符串拆分,合并,替换
- SQL不定条件的查询, 数据库拆分字符串
- Oracle SQL多行字符串拆分使用层次查询(connect by)、正则表达式
- SQL拆分字符串
- SQL 拆分字符串
- Sql 存储过程拆分字符串
- SQL Server : T-SQL中拆分字符串的一个自定义函数
- SQL 字符串拆分
- 【SQL】sql版Split函数。用于拆分字符串为单列表格
- SQL SERVICE 拆分字符串的表值函数
- 在论坛中出现的比较难的sql问题:25(字符串拆分3)
- T-SQL技巧收集——拆分字符串
- T-SQL开发 - 04.字符串合并与拆分
- SQL 字符串拆分
- 在论坛中出现的比较难的sql问题:25(字符串拆分3)
- sql拆分字符串
- SQL 字符串拆分
- Sql中将字符串按分割符拆分