存储过程csv输入

时间:2011-11-24 06:57:39

标签: sql sql-server-2005

  

可能重复:
  Split Function equivalent in tsql?
  SQL Search column for each variable in CSV string

我有一个存储过程,它将输入@Notifications作为34181,34182,34184等字符串。

现在,我希望将此字符串拆分为另一个变量@Notification将包含第一次34181和下一次34182等。

这些数字34181长度不固定。它也可以是3418123因为我不能使用substr函数。

如何拆分此字符串?

2 个答案:

答案 0 :(得分:0)

您可以将函数charIndex与子字符串函数结合使用。 e.g。

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

Result

030-0074321    4

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

答案 1 :(得分: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, ','))

或非常相似。