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