SQL根據(jù)指定分隔符分解字符串實(shí)現(xiàn)步驟
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',',')
結(jié)果返回
sun
star
moon
clouds
在上面的代碼做變形,返回有多少個(gè)元素
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',',')
結(jié)果返回
4
相關(guān)文章
自增長(zhǎng)鍵列統(tǒng)計(jì)信息的處理方法
在這篇文章展示了SQL Server的查詢(xún)優(yōu)化器如何使用自增長(zhǎng)鍵列統(tǒng)計(jì)信息,大家都知道SQLServer里每個(gè)統(tǒng)計(jì)信息對(duì)象都有關(guān)聯(lián)的直方圖直方圖用多個(gè)步長(zhǎng)描述指定列數(shù)據(jù)分布情況,需要的朋友可以參考下2015-07-07
SQL常用日期查詢(xún)語(yǔ)句及顯示格式設(shè)置
這篇文章介紹了SQL常用日期查詢(xún)語(yǔ)句及顯示格式設(shè)置,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
SQL實(shí)現(xiàn)讀寫(xiě)分離的分配的幾種方式
讀寫(xiě)分離的分配,即如何在應(yīng)用程序中將讀操作和寫(xiě)操作路由到不同的數(shù)據(jù)庫(kù)實(shí)例,可以通過(guò)幾種不同的方法來(lái)實(shí)現(xiàn),下面就來(lái)介紹SQL實(shí)現(xiàn)讀寫(xiě)分離的分配的幾種方式,感興趣的可以了解一下2025-04-04
SQL?Server中操作XML數(shù)據(jù)的示例詳解
在關(guān)系數(shù)據(jù)庫(kù)的世界中,SQL?Server?一直以其強(qiáng)大的功能脫穎而出,在本文中,我將探討如何在?SQL?Server?中存儲(chǔ)、查詢(xún)和操作?XML?數(shù)據(jù),需要的可以參考下2024-12-12
MS SQL SERVER 數(shù)據(jù)庫(kù)日志壓縮方法與代碼
MS SQL SERVER 數(shù)據(jù)庫(kù)日志壓縮方法與代碼...2007-03-03
sqlserver 批量刪除存儲(chǔ)過(guò)程和批量修改存儲(chǔ)過(guò)程的語(yǔ)句
sqlserver 批量刪除存儲(chǔ)過(guò)程和批量修改存儲(chǔ)過(guò)程的語(yǔ)句,需要的朋友可以參考下。2011-07-07
學(xué)會(huì)sql數(shù)據(jù)庫(kù)關(guān)系圖(Petshop)
花了這么多時(shí)間最終還是回到了數(shù)據(jù)庫(kù),但是數(shù)據(jù)庫(kù)中一張一張的表格找不到腳本,也不是自己設(shè)計(jì)的數(shù)據(jù)庫(kù),完全沒(méi)有一點(diǎn)頭緒,后來(lái)突然想起來(lái)sql有個(gè)數(shù)據(jù)庫(kù)關(guān)系圖,可以很快的適合數(shù)據(jù)庫(kù)程序員很快的掌握數(shù)據(jù)庫(kù)表之間的關(guān)系2012-08-08
SQL?Server數(shù)據(jù)庫(kù)死鎖的原因及處理方法
SQL Server數(shù)據(jù)庫(kù)死鎖是指兩個(gè)或多個(gè)事務(wù)相互等待對(duì)方持有的資源,從而導(dǎo)致它們都無(wú)法繼續(xù)執(zhí)行的情況,下面這篇文章主要給大家介紹了關(guān)于SQL?Server數(shù)據(jù)庫(kù)死鎖的原因及處理方法,需要的朋友可以參考下2024-08-08
SQL語(yǔ)句 操作全集 學(xué)習(xí)mssql的朋友一定要看
SQL操作全集 下列語(yǔ)句部分是Mssql語(yǔ)句,不可以在access中使用。2009-03-03
SQL Server數(shù)據(jù)庫(kù)按百分比查詢(xún)出表中的記錄數(shù)
這篇文章主要介紹了SQL Server數(shù)據(jù)庫(kù)在一個(gè)表中按百分比查詢(xún)出記錄條數(shù)的方法及代碼示例,需要的朋友可以參考下2015-08-08

