2012-10-21 202 views
8

有兩個字符串ab分割字符串用逗號2008

a字符串包含逗號。我想用逗號分割一個字符串,然後遍歷每個元素。

IF的b串包含分割用逗號將返回任何元素0

(例如:A = "4,6,8"; B = "R3799514"因爲b字符串包含4,從而返回0)

如何實現這個用存儲過程?提前致謝!

我看到一個分裂的功能:

CREATE FUNCTION dbo.Split(@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 top 10 * from dbo.split('Chennai,Bangalore,Mumbai',',') 
+0

你應該先正常化分貝。 http://databases.about.com/od/specificproducts/a/normalization.htm –

+2

更好的拆分功能:http://www.sqlperformance.com/2012/07/t-sql-queries/split-strings和http: //www.sqlperformance.com/2012/08/t-sql-queries/splitting-strings-now-with-less-t-sql –

回答

6

下面的工作 -

DECLARE @A VARCHAR (100)= '4,5,6' 
DECLARE @B VARCHAR (100)= 'RXXXXXX' 
DECLARE @RETURN_VALUE BIT = 1 --DEFAULT 1 


SELECT items 
INTO #STRINGS 
FROM dbo.split(@A,',') 

IF EXISTS(SELECT 1 FROM #STRINGS S WHERE CHARINDEX(items, @B) > 0) 
SET @RETURN_VALUE = 0 

PRINT @RETURN_VALUE 

DROP TABLE #STRINGS 

您還可以使用CONTAINS代替CHARINDEX -

IF EXISTS(SELECT 1 FROM #STRINGS S WHERE CONTAINS(items, @B)) 
SET @RETURN_VALUE = 0 
+1

這是什麼樣的編輯:) –

相關問題