【问题标题】:MySQL SELECT with LIKE, Wildcards and leading zeroes带有 LIKE、通配符和前导零的 MySQL SELECT
【发布时间】:2014-06-24 14:50:47
【问题描述】:

我有一个奇怪的问题。我正在为公司内部应用程序编写控制面板,该应用程序在后端使用 MySQL 数据库。

我目前有这样的声明:

SELECT * FROM users WHERE ldap_user LIKE '%--Searchterm--%' OR Firstname LIKE '%--Searchterm--%' OR Lastname LIKE '%--Searchterm--%' OR id LIKE '%--Searchterm--%';

“--Searchterm--”是我通过 PHP 提供的。现在我希望能够交出带有前导零的搜索词,并且仍然能够将其与未填充的 id 匹配。

我知道,我可以用 PHP 去除零,但如果可能的话,我想要一个纯 MySQL 解决方案。

我不知道要查找什么,因为在“搜索”除 id 之外的其他字段时,我发现的所有内容都没有解决 Select-query。

如果可能的话,我更喜欢一个查询,它不使用一些狂野的 JOIN,而是使用简单的 MySQL。

【问题讨论】:

  • 不太明白,你的意思是查询搜索数据时返回的数据应该不为零?您能在数据库中显示一些示例数据和示例输入以供搜索吗?
  • 搜索词总是数字吗?如果没有,那么您就不能使用 WHERE ... LIKE CONCAT('%', searchterm + 0, '%') 的简单技巧,因为这会混淆您传入的任何实际搜索字符串。
  • 您的意思是搜索反向变体,例如:“'--Searchterm--0000000' LIKE ldap_user”并且 ldap_user 的值为 '%--Searchterm--%'?
  • @Mattt:谢谢,这就是我要找的东西!

标签: php mysql select search sql-like


【解决方案1】:

感谢@Mattt!

解决方案是使用

[...] OR id LIKE TRIM(LEADING '0' FROM '--Searchterm--');

-> 面部护理

我没有想到TRIM,也不知道,你可以这样简单地使用它。

再次感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多