【问题标题】:Searching from a mysql database based on a string in php根据php中的字符串从mysql数据库中搜索
【发布时间】:2015-01-30 08:44:32
【问题描述】:

我有一个字符串 foo = "a,b"。现在我想在 mysql 数据库中搜索以获取 user_id,同时将字符串与 likes 字段进行比较。 likes 字段的数据格式为interest => a c v d b。 不同的字符用空格隔开。我尝试使用 like 但结果不符合标准。我该怎么办?

这是我的代码

select user_id from users where interest like %foo%;

【问题讨论】:

  • 您需要将查询更改为 WHERE interest LIKE '%foo%' OR interest LIKE '%bar%' OR interest LIKE '%oof%' 等。除非您使用 SQL 构建器,否则您不能像这样直接使用数组(并且 SQL 构建器只能工作,因为他们已经编写了代码来执行此操作你)。
  • 你有一个字符串 "a,b,c,d,e,f...." 和一个在 DB 中具有空格分隔值的兴趣字段 (abcde f......) .您想将字符串的每个值与兴趣字段的每个值进行比较???

标签: mysql


【解决方案1】:

MySql 不支持 set like 字段中的多个关键字搜索,您应该在每个搜索关键字的OR 条件下加上REGEXP 如果您对格式感兴趣,例如=> a,c,v,d,b,那么您可以使用FIND_IN_SET() 函数,否则REGEXP 提供精确搜索。

SELECT user_id FROM users 
WHERE interest REGEXP '[[:<:]]a[[:>:]]' AND interest REGEXP '[[:<:]]b[[:>:]]'

此查询仅在字段中搜索 ab 而不是 aabbax

LIKE 不支持精确搜索。

【讨论】:

    猜你喜欢
    • 2014-12-17
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    相关资源
    最近更新 更多