sql分割字串,sql分割

來源:互聯網
上載者:User

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
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.