【问题标题】:SELECT all_data WHERE value_in_column LIKE specific_string选择 all_data WHERE value_in_column LIKE specific_string
【发布时间】:2016-12-18 15:11:20
【问题描述】:

我有一个 MySQL 数据库,其中包含一个表,其中包含某辆车在许多不同的日子里的大量数据。在此表中有一个名为 time_stamp 的列,其中包含数据的获取日期,如下所示:

ID   UnitID   time_stamp         data   more_data
0    56       2016-08-10 12:01   asdf   12
1    57       2016-08-09 11:19   ghjk   34
2    57       2016-08-09 9:35    qwer   56
3    58       2016-08-09 1:16    tyui   78

我想选择表中 UnitID LIKE 57time_stamp LIKE 2016-08-09% 的所有内容,以便返回:

ID   UnitID   time_stamp         data   more_data
1    57       2016-08-09 11:19   ghjk   34
2    57       2016-08-09 9:35    qwer   56

我尝试了SELECT * FROM table_name WHERE time_stamp LIKE 2016-08-09% AND UnitID LIKE 57;,但我不断收到Error Code: 1054,告诉我有一个unknown column in 'where clause'。我对 MySQL 还是很陌生,但我通常可以在MySQL Docs 的帮助下弄清楚我需要做什么,但是我无法弄清楚这一点。我也寻找过类似的问题,例如this one here,但我发现没有什么能够完全实现我想要的。

【问题讨论】:

    标签: mysql select sql-like


    【解决方案1】:

    LIKE 用于字符串匹配,因此与更合适的运算符相比相对较慢。使用这样的 WHERE 查询会更好:

    WHERE UnitID = 57 AND time_stamp BETWEEN '2016-08-09 00:00:00' AND '2016-08-09 23:59:29'
    

    也就是说,MySQL 对您的查询的主要反对意见可能是您没有将 2016-08-09% 括在引号中。

    【讨论】:

    • 完美运行,谢谢!我之所以选择这个,是因为它正在被实现到一个程序中,并且当指定日期之后的time 没有改变时,它更容易实现。另一方面,我确实在引号中使用了2016-08-09%,但我使用了“`”作为引号,这与 Stack Overflow 输入格式相混淆。
    • 啊,是的,` 会让 MySQL 期望你有一个 named 2016-08-09% 的字段。
    【解决方案2】:

    这里不需要LIKE 子句。试试这个:

    SELECT * FROM table_name
    WHERE
    time_stamp >= Convert(datetime,'2016-08-09')
    AND
    time_stamp < Convert(datetime,'2016-08-10')
    AND
    UnitID = 57
    

    【讨论】:

    • 这个答案也有效,但由于日期格式,它更难实现,因为用户只输入第一个日期,在这种情况下2016-08-09 并且程序必须为第二个日期增加通过+1。这将导致并出现2016-08-31 之类的问题,因为没有2016-08-32。当然,我可以设置限制并解决它,但其他答案更容易实现。无论如何,谢谢!
    【解决方案3】:

    我认为您不需要 LIKE 进行此查询,因为您要查找的数据不是 TEXTVARCHARCHAR 数据。尝试在你的谓词中这样做:

    WHERE UnitID = 57 AND DATE(time_stamp) = '2016-08-09'
    

    【讨论】:

    • 由于某种原因,我无法使用此语法,我想这是因为time_stamp 的格式是数据和时间只是日期。我从其他人的答案中得到了我需要的东西,但无论如何感谢您的回复!
    猜你喜欢
    • 2021-09-14
    • 2011-05-12
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2011-08-16
    • 2017-09-12
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多