Sql查询没有检索到正确的结果

时间:2017-04-18 18:08:21

标签: c# mysql

我正在尝试从电影数据库中检索记录,其中Type字段等于“HOR”(恐怖),但有些记录有多种类型(HOR,COM,ADV),我的查询只返回记录完全等于“HOR”的结果。如何检索具有“HOR”类型的所有记录?

我的查询:

selectCommand = "SELECT Type from DVDs WHERE Type = HOR";

注意:

  • 数据库中的“类型”字段是短文

  • 我使用Visual Studio 2015在C#编码

3 个答案:

答案 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%' ";