【发布时间】:2020-07-29 14:05:40
【问题描述】:
我在数据库中有一个包含这些值的列:
##1##,##7##,
##1##,##3##,##5##,
我需要检查##3##是否存在。
我尝试使用like子句
declare @MyCSharpParameter
set @MyCSharpParameter = '##3##,##4##'
select * from myTable where col like '%@MyCSharpParameter%'
但是,它不能正常工作,因为 myTable 没有 '##3##,##4##' 它有 ##3##,##5##,
任何帮助,请检查它作为单独的数字并找到 3。
【问题讨论】:
-
我删除了不一致的数据库标签。请用您真正使用的数据库进行标记。然后,修复您的数据模型,这样您就不会在逗号分隔的字符串中存储多个值。这是一个 SQL 反模式。
-
如果你想找到 "##3##' 为什么不把你的参数设置成这样
set @MyCSharpParameter = '##3##'? -
@GordonLinoff 我正在处理旧项目,它已经像这样构建了。我无法更改数据模型。
-
@DiogoMagro 亲爱的,因为这些值来自 C# 中的多选,用户可以选择 3 和 4 我需要检查所选值中的至少一个值是否存在于 mytable 中。
-
@QaisAlmomany 好的.. 你检查 STRING_SPLIT 了吗?你可以用逗号分割你的 c# 参数,然后你把你的参数分开来检查你想要什么
标签: sql sql-server ado.net