【发布时间】:2015-11-23 12:51:36
【问题描述】:
我有一个小问题可以在 C# 中轻松解决,但我被要求在 SQL 中解决。
我有一个以 int 作为参数的存储过程,我需要检查该参数是否在数据库中以冒号分隔的列的值内。
(
(
gvf_permitted_projects is null
)
or
( -- @activeProject IN gvf_permitted_projects
-- @activeProject = 11
-- gvf_permitted_projects = '11:17'
)
)
这是在我的 SELECT 的 where 子句中,我可以在 C# 中以最小的努力做到这一点,但我不太确定如何在这里做到这一点。我需要使用临时表,然后对其进行选择吗?
【问题讨论】:
-
数据库中的冒号分隔列如何,遵循任何特定顺序。带有大小写的示例输入数据会有所帮助。
-
您可以使用自定义拆分 T-SQL 函数。签出这个答案stackoverflow.com/questions/10914576/t-sql-split-string
-
就像在 cmets 中显示的那样,11:17 那里选择的数字只是示例。但我希望它返回 true,因为 11 在 lsit 中
-
如果我使用了拆分字符串函数?我可以在 where 子句中实现它吗?
-
我猜这个查询可能会起作用,只需在
WHERE子句中检查相同的内容-PATINDEX('%'+CAST(@activeProject AS VARCHAR(10))+'%',@gvf_permitted_projects)
标签: sql asp.net sql-server parsing