作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个搜索引擎系统。在 MySQL 语句中,我连接了名字和姓氏,并试图让用户匹配他们的名字和姓氏中的关键字母。如果他们的account_type = 0
和account_ban = 0
,它还会返回account_Type = 1
和account_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 = 1
和 account_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/
我是一名优秀的程序员,十分优秀!