【问题标题】:Using LIKE against a integer对整数使用 LIKE
【发布时间】:2019-07-18 21:28:32
【问题描述】:

我正在尝试对存储为整数的 NumberID 进行LIKE 搜索。我可以轻松编辑用于搜索 varchar 的代码以同时搜索整数吗?

$sql .= " WHERE NumberID LIKE '%$search_term%'";

search_term 取自一个 PHP 框,用户可以使用它来输入要搜索的信息。理想情况下,我现在想避免从整数更改数据库。

【问题讨论】:

  • $search_term 转义了吗?你应该小心mysql注入。
  • 你期望得到什么结果?
  • 对整数使用LIKE 是非常可疑的。您的数据模型似乎有问题。
  • 也许你应该看看按位运算符...
  • 如果您收到了您认为是解决您问题的最佳解决方案的答案,您可以accept它。

标签: php sql integer sql-like


【解决方案1】:

您当前的代码实际上应该按原样工作,但从技术上讲,您应该先将整数转换为文本,然后再构建 LIKE 表达式:

WHERE NumberID LIKE CONCAT('%', CAST(? AS CHAR(50)), '%')

然后,您可以将整数变量 $search_term 绑定到 ? 占位符。

【讨论】:

    【解决方案2】:

    这样就可以了:

    $sql .=<<<AZE
    where convert(NumberID, char(20)) like '%{$search_term}%'
    AZE;
    

    诀窍是将 NumberID 转换为字符串。将“like”的右侧转换为字符串是无稽之谈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多