MySQL 'AND' 子句没有正常运行

标签 mysql sql

我正在尝试创建一个搜索引擎系统。在 MySQL 语句中,我连接了名字和姓氏,并试图让用户匹配他们的名字和姓氏中的关键字母。如果他们的account_type = 0account_ban = 0,它还会返回account_Type = 1account_ban = 1 的用户>。以下是我的查询:

SELECT 
 firstname, lastname
FROM users
WHERE CONCAT(firstname,lastname) LIKE '%jb%'
   OR CONCAT(firstname,lastname) LIKE '%bj%' 
  AND account_type = 0
  AND account_ban = 0;

我这里有两个问题。第一个它返回具有 account_type = 1account_ban = 1 的用户,第二个问题是如果我在名称中插入一个空格,例如%j b%%b j%,它不会返回任何东西。请帮忙。

最佳答案

目前还不清楚您真正想要的空间是什么,但这里有一个解决方案:

SELECT firstname, lastname
FROM users
WHERE (CONCAT(firstname, lastname) LIKE '%j%b%' OR
       CONCAT(firstname, lastname) LIKE '%b%j%' 
      ) AND
      account_type = 0 AND account_ban = 0;

这将匹配“b”和“j”之间的任何字符,包括无字符和空格。您可以用 '_' 恰好匹配一个字符,但这似乎不是您想要的。这应该可以解决问题:

WHERE (REPLACE(CONCAT(firstname, lastname), ' ', '') LIKE '%j%b%' OR
       REPLACE(CONCAT(firstname, lastname), ' ', '') LIKE '%b%j%' 
      ) AND
      account_type = 0 AND account_ban = 0;

关于MySQL 'AND' 子句没有正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265045/

相关文章:

mysql - SQL Multiple Joins 多个where

mysql - 替代子查询

sql - 配置 SQL Server 以存储 UTC 日期时间

c# - 如何确定sql server中连续的日期记录

java - 我有一个离线 SQLite 数据库,我想使其在线并使用它

php - 关键词标签结构

php - 数据库设计: join with uid or with two fields

php - 在php中插入excel上传查询

mysql - AI ID 字段上的 WHERE 子句出现意外结果

c# - 是否有任何理由仅将 string.Format() 与字符串参数一起使用?