2011-11-24 108 views
0

可能重複:
Split Function equivalent in tsql?
SQL Search column for each variable in CSV string存儲過程CSV輸入

我有一個存儲過程這需要輸入@Notifications34181,34182,34184作爲等的字符串。

現在,我想這個字符串中,使得另一個變量@Notification將包含第一次34181,並在下一次34182

這些數字34181長度不固定的方式分割。它可以是341812或只是3也因爲這個我不能使用substr函數。

如何拆分這個字符串?

+1

右上角,搜索:http://stackoverflow.com/search?q=%5Bsql-server%5D+%2Bsplit。你從未投過票,從不接受任何答案。 – gbn

+0

看看下面的線程: http://stackoverflow.com/questions/2647/split-string-in-sql – Aaron

回答

0

你可以使用功能charIndex與子串函數的組合。例如

select Phone,charindex('-',Phone) from customers 

Result 

030-0074321 4 

http://dotnetguts.blogspot.com/2008/05/instr-function-in-sql-server.html

+0

您不能重複值... – gbn

+0

我的做法是 GET指數的第一個逗號,並且從零索引到逗號索引獲得值,這將是我的第一個值。現在從原始字符串,如原始字符串=(commaIndex + 1,原始字符串長度)的子字符串....現在再次finad索引的逗號.... – Zohaib

+0

@gbn我想它應該工作,我不知道一些更好的字符串函數來實現這個目標,雖然我會搜索 – Zohaib

0

雖然你已經對如何在SQL創建string.Split功能環節多,這個簡單的方法是:

SELECT * 
FROM Customers 
WHERE ',' + @CustomerID + ',' LIKE '%,' + Customers.CustomerID + ',%' 

雖然它不會使用任何索引上客戶ID,如果你只有一個小桌子,這很好,否則在函數中複製string.split方法並調用它。

SELECT * 
FROM Customers 
WHERE CustomerID IN (SELECT Value FROM dbo.Split(@CustomerIDs, ',')) 

或者非常相似。