【发布时间】:2016-06-21 17:25:16
【问题描述】:
我正在编写一个 SQL 存储过程。传递给存储过程的参数之一是列表(逗号分隔的字符串)。
我知道如果我想在该列表中查找特定字符串,我可以使用 SELECT * FROM myTable WHERE myField IN (@myList) 之类的东西
但是如果“myField”也包含一个列表(逗号分隔的字符串)怎么办。如何检查“@myList”是否匹配“myField”列表中的任何值?
我正在使用 SQL Server 2014 SP1,如果这有什么不同的话。
【问题讨论】:
-
你想要一个表值参数
-
这不是“现有问题的精确副本”。虽然建议的解决方案可能适用,但链接的问题是指从 C# 应用程序传递数据,而我的问题是在存储过程中专门处理。
-
您可以将表从任何语言传递到存储过程,包括另一个存储过程。实际上存储过程是最快的。使用此答案中描述的解析器非常慢,并且是解决此问题的错误方法。当您的系统变慢并且您发布有关如何加快速度的问题时,请记住此评论并更改为使用表值参数。祝你好运。
标签: sql stored-procedures