【问题标题】:SQL LIKE issue it selects 1, 10 and 11 if i want to select 1 from my user_id'sSQL LIKE 问题如果我想从我的 user_id 中选择 1,它会选择 1、10 和 11
【发布时间】:2016-10-18 16:53:20
【问题描述】:

我对 SQL 不是很熟悉,现在我的查询有问题,这让我发疯了我有这个查询,我希望它只输出 id 为 1 的记录,但它也输出记录 10 和 11

这是我的查询:

SELECT * FROM products WHERE id LIKE ?

绑定参数为:

$id

在这种情况下是 1 ($_GET['id'])

提前致谢

【问题讨论】:

  • tr id = ? 相反,它提供了更精确的比较。 like 只是,嗯... 喜欢
  • 如果我这样做,它不会在 al @FranzGleichmann 输出任何东西
  • 显示您的绑定。你在串联吗?还有mysql 或sql-server?
  • @A.Mousavi 没有。不要那样做。通过将 LIMIT 与 LIKE 语句一起使用,您无法保证您实际检索到您想要的一个数据集
  • 不可能。 where x like 1 等同于 where x=1 执行。没有通配符,因此您应该不返回10。 select 1 like 10 评估为 FALSE。

标签: php mysql sql sql-server


【解决方案1】:

类似于模式匹配,并与通配符键一起使用以查找相似的结果。您正在寻找一个确切的值,所以只需直接与等号比较:

SELECT * FROM products WHERE id =

使用like,你可以找到任何包含1的东西

id like '%1%'

或两位数,其中第一个数字是 1

id like '1_'

这是关于 TSQL 的 like 运算符的文档。但认为你只需要=... https://msdn.microsoft.com/en-us/library/ms179859.aspx

【讨论】:

    【解决方案2】:

    尝试在您的查询中将“LIKE”替换为“=”

    【讨论】:

    • 我正要发帖,但他真的应该使用参数化语句,而不是原始的 WHERE 子句。
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 2021-11-15
    • 2010-12-03
    • 1970-01-01
    • 2015-12-07
    • 2015-08-15
    • 2023-01-29
    • 1970-01-01
    相关资源
    最近更新 更多