Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 存储过程:传递值数组时在表中搜索_Sql Server_Arrays_Stored Procedures_Parameters - Fatal编程技术网

Sql server 存储过程:传递值数组时在表中搜索

Sql server 存储过程:传递值数组时在表中搜索,sql-server,arrays,stored-procedures,parameters,Sql Server,Arrays,Stored Procedures,Parameters,我需要创建一个接收参数(名为@code)的存储过程 这是一个字符串,其中包含由半列分隔的代码列表。 我需要查看一个表的内部,并返回所有包含在@codes参数中传递的代码(在列EANcodes中)的行 有人能帮我开始吗。我对存储过程的了解非常有限 提前感谢。存储过程实际上并不打算将字符串列表作为参数处理。最好在应用程序代码中将其拆分,然后多次调用存储过程,每次都将其作为参数 然而,如果你觉得有必要这样做。您可以循环遍历字符串,并使用CHARINDEX查找分号的下一个索引,然后使用SUBSTRING

我需要创建一个接收参数(名为@code)的存储过程

这是一个字符串,其中包含由半列分隔的代码列表。 我需要查看一个表的内部,并返回所有包含在@codes参数中传递的代码(在列EANcodes中)的行

有人能帮我开始吗。我对存储过程的了解非常有限


提前感谢。

存储过程实际上并不打算将字符串列表作为参数处理。最好在应用程序代码中将其拆分,然后多次调用存储过程,每次都将其作为参数

然而,如果你觉得有必要这样做。您可以循环遍历字符串,并使用CHARINDEX查找分号的下一个索引,然后使用SUBSTRING获取下一个代码。然后,您可以在每次迭代中为匹配的行使用CTE,当循环完成时,只需返回CTE即可。这是相当骇客,但我想不出任何其他方式来做这件事。 (这些是T-SQL字符串函数)

有关字符串操作函数的信息(在T-SQL中):


MySQL中也有类似的函数:

存储过程实际上并不打算将字符串列表作为参数来处理。最好在应用程序代码中将其拆分,然后多次调用存储过程,每次都将其作为参数

然而,如果你觉得有必要这样做。您可以循环遍历字符串,并使用CHARINDEX查找分号的下一个索引,然后使用SUBSTRING获取下一个代码。然后,您可以在每次迭代中为匹配的行使用CTE,当循环完成时,只需返回CTE即可。这是相当骇客,但我想不出任何其他方式来做这件事。 (这些是T-SQL字符串函数)

有关字符串操作函数的信息(在T-SQL中):


这里是MySQL中类似的函数:

理想情况下,我更愿意看到以另一种方式传递的参数,可以使用(假设为SQL 2008)或可以轻松分解到表中的XML


或者,使用SQL split函数(一个示例是)将字符串解析为临时表,然后在select查询中针对该表进行联接。

理想情况下,我更希望看到以另一种方式传递的参数,可以使用(假设为SQL 2008)或可以轻松分解为表的XML


或者,使用SQL split函数(例如)将字符串解析为临时表,然后在select查询中针对该表进行联接。

或者,对于快速而肮脏的解决方案,使用REPLACE()将分号转换为逗号,然后使用动态SQL将其转换为in(…)子句。但我不能真的把它作为一个答案来推荐,因为做这种事情是一个很大的迹象,表明你的设计是错误的!或者,对于快速而肮脏的解决方案,使用REPLACE()将分号转换为逗号,然后使用动态SQL将其转换为IN(…)子句。但我不能真的把它作为一个答案来推荐,因为做这种事情是一个很大的迹象,表明你的设计是错误的!