【问题标题】:SQL "SELECT" Command Not Working, even though entry is in DBSQL“SELECT”命令不起作用,即使条目在数据库中
【发布时间】:2016-02-28 07:17:14
【问题描述】:

我创建了以下数据库:

CREATE TABLE QuizRepo (
User_ID BIGINT AUTO_INCREMENT PRIMARY KEY,
Name TEXT
)

我通过 JDBC 填充它,当我填充它时,我得到:

mysql> select * from QuizRepo;
| User_ID | Name    |
|       1 | "XXQuiz"|

当我执行以下命令时,它按预期工作:

mysql> select * from QuizRepo where USER_ID=1;
User_ID | Name      |
|       1 | "XXQuiz"|

但是,当我执行以下命令时,我得到了一个奇怪的结果

mysql> select * from QuizRepo where Name="XXQuiz";
Empty set (0.01 sec)

以前有人见过这种情况吗?这怎么可能?也许我将它错误地添加到数据库中(似乎不太可能),但是您可以清楚地看到有一个名为“XXQuiz”的条目,为什么它没有找到它?

【问题讨论】:

  • 我的返回正确...您使用的是哪个版本的 mysq?
  • 似乎工作正常 => sqlfiddle.com/#!9/630b5/1
  • 请记住,在 SQL 中,您应该使用单引号来分隔字符串。 (MySQL 将允许您使用双引号 if ANSI_QUOTES isn't turned on,但最好使用单引号。)我猜对如何完成引用的一个小误解可能会导致您意外地将您的 Name 放入数据库中用双引号括起来。

标签: mysql sql jdbc


【解决方案1】:

您似乎也存储了引号。所以你需要这样做: select * from QuizRepo where Name = "\"XXQuiz\"";

或类似的。

【讨论】:

  • 或者只是不存储引号
【解决方案2】:

可能是你的名字不完全匹配检查这个并尝试一下

select * from QuizRepo where Name like "%XXQuiz%";

【讨论】:

    猜你喜欢
    • 2014-06-13
    • 1970-01-01
    • 2014-09-11
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多