程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL依據指定分隔符分化字符串完成步調

SQL依據指定分隔符分化字符串完成步調

編輯:MSSQL

SQL依據指定分隔符分化字符串完成步調。本站提示廣大學習愛好者:(SQL依據指定分隔符分化字符串完成步調)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL依據指定分隔符分化字符串完成步調正文


假如有一個字符串 eg: "sun,star,moon,clouds",想要在MS SQL中依據給定的分隔符','把這個字符串分化成各個元素[sun] [star] [moon] [clouds],若何完成呢?為此,創立一個Function,代碼以下:

CREATE FUNCTION [dbo].[Split_StrByDelimiter](@String VARCHAR(8000), @Delimiter CHAR(1))
RETURNS @temptable TABLE (items VARCHAR(8000))
AS
BEGIN
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)
SELECT @idx = 1
IF len(@String)<1 OR @String IS NULL RETURN
while @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@String)
IF @idx!=0
SET @slice = LEFT(@String,@idx - 1)
ELSE
SET @slice = @String
IF(len(@slice)>0)
INSERT INTO @temptable(Items) VALUES(@slice)
SET @String = RIGHT(@String,len(@String) - @idx)
IF len(@String) = 0 break
END
RETURN
END

示例:假如輸出
SELECT * FROM dbo.Split_StrByDelimiter('sun,star,moon,clouds',',')
成果前往
sun
star
moon
clouds
在下面的代碼做變形,前往有若干個元素

CREATE FUNCTION [dbo].[GetCount_Split_StrByDelimiter](@String VARCHAR(8000), @Delimiter CHAR(1))
RETURNS INT
AS
BEGIN
DECLARE @temptable TABLE (items VARCHAR(8000))
DECLARE @SplitCount INT
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)
SELECT @idx = 1
IF len(@String)<1 OR @String IS NULL RETURN 0
while @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@String)
IF @idx!=0
SET @slice = LEFT(@String,@idx - 1)
ELSE
SET @slice = @String
IF(len(@slice)>0)
INSERT INTO @temptable(Items) VALUES(@slice)
SET @String = RIGHT(@String,len(@String) - @idx)
IF len(@String) = 0 break
END
SET @SplitCount=(SELECT COUNT(*) FROM @temptable)
RETURN @SplitCount
END

示例
SELECT dbo.GetCount_Split_StrByDelimiter('sun,star,moon,clouds',',')
成果前往
4
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved