我正在尝试从电影数据库中检索记录,其中Type字段等于“HOR”(恐怖),但有些记录有多种类型(HOR,COM,ADV),我的查询只返回记录完全等于“HOR”的结果。如何检索具有“HOR”类型的所有记录?
我的查询:
selectCommand = "SELECT Type from DVDs WHERE Type = HOR";
注意:
数据库中的“类型”字段是短文
我使用Visual Studio 2015在C#编码
答案 0 :(得分:1)
假设您的类型与"HOR,COM,ADV"
位于同一列,则只需将=
更改为LIKE
,并在搜索字符串周围使用通配符%
({{1}在这种情况下)。
HOR
这将在列值中的任意位置搜索字符串selectCommand = "SELECT Type from DVDs WHERE Type LIKE '%HOR%'";
,而不仅仅是那些值正好为HOR
的列。
答案 1 :(得分:1)
虽然“LIKE”匹配可行(并且其他人正确地解释了它),但我建议考虑重组您的数据。使用文本字段的方式实际上不是SQL的设计方式。
一个问题是你真的无法对其进行输入验证。通常,您可以拥有(并且最佳做法)数据库完整性 - 检查您输入的数据。这样,没有人可以错误地输入像HAR(而不是HOR)这样的东西。
其次,您之后无法为该字段添加任何选项,该字段可能包含您要查找的子字符串之一。
第三,根据数据库的大小和负载情况,你可能会把它放在一边,这不是一个非常高效的解决方案。
我确信我有理由忘记,但至少出于这些原因,我建议创建第二个表格,将电影与流派联系起来,主键是(filmid,genreid)
答案 2 :(得分:0)
试
"SELECT Type from DVDs WHERE Type LIKE '%HOR%' ";