欢迎投稿

今日深度:

sql分割字符串,sql分割

sql分割字符串,sql分割


create function [dbo].[fn_Split]
 (
 @SourceSql nvarchar(max),--源分隔字符串
 @StrSeprate varchar(10)--分隔符
 )
 returns @temp table(a nvarchar(max))
 as
begin
     declare @i int
     set @SourceSql=rtrim(ltrim(@SourceSql))
     set @i=charindex(@StrSeprate,@SourceSql)
     while @i>=1
     begin
         insert @temp values(left(@SourceSql,@i-1))
         set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
         set @i=charindex(@StrSeprate,@SourceSql)
     end
     if @SourceSql<>'\'
        insert @temp values(@SourceSql)
     return
end
go


sql分割字符串

看你是什么数据库。
在Sql Server里面,不支持类似正则的方式拆分,只能使用字符串函数。
LEFT(name,CHARINDEX('.',name,0)) 这样的方式获取
中间部分可以用SUBSTRING代替LEFT实现
 

sql 字符串拆分??

OK!测试通过了。试试吧。觉得好就多加点分

exec decord_a '1a@b2@c3@e4@f5'

---这个存储过程可以提取包含任意个@字符的字符串,通过临时表输出,使用查询分析器或前台数据集都可以得到结果。

create procedure decord_A
@STR VARCHAR(100)
AS
declare @n int,@SN INT
SET @N=LEN(@STR)-LEN(REPLACE(@STR,'@',''))--提取字符@的个数
SET @SN=1
CREATE table #TEMP(SN INT,CSTR VARCHAR(100))
WHILE @SN<=@N
BEGIN
INSERT INTO #TEMP SELECT @SN,LEFT(@STR,CHARINDEX('@',@STR)-1)
SELECT @SN=@SN+1,@STR=SUBSTRING(@STR,CHARINDEX('@',@STR)+1,100)
END
INSERT INTO #TEMP SELECT @N+1,@STR
SELECT *FROM #TEMP order by sn
GO
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2522.html NewsArticle sql分割字符串,sql分割 create function [dbo].[fn_Split] ( @SourceSql nvarchar(max),--源分隔字符串 @StrSeprate varchar(10)--分隔符 ) returns @temp table(a nvarchar(max)) as begin declare @i int set @SourceSql=rtrim(ltrim(@So...
评论暂时关闭