如何使用上下posix字符类在mySQL中搜索文本?
-
16-10-2019 - |
题
我想搜索文本,以找出何时上面的特定单词。 MySQL具有POSIX字符类[[:upper:]]的RegexP函数,但是对于我的生命,我无法返回任何结果。
说我想仅在上案中搜索字符串字面的“免费”字符串。
假设表结构就像:
CREATE TABLE article_body (
id INT NOT NULL AUTO_INCREMENT,
article_id INT NOT NULL,
summary VARCHAR(255),
body_text TEXT,
PRIMARY KEY(id));
我想找到body_text列,在所有大写字母中,free单词都在其中,例如
SELECT id, summary FROM article_body WHERE body_text REGEXP '[[:upper:]]+FREE';
但是,当然,语法是无效的。
帮助?
解决方案
从有关 mysql Regexp:
REGEXP不敏感,除非与二进制字符串一起使用。
一个简单的解决方案是使用 二进制 操作员:
SELECT * FROM article_body WHERE body_text REGEXP BINARY "FREE";
至于为什么您的示例不起作用,我的解释方式是“任何带有一个或多个大写字母的字符串,然后是免费的”,但是当然,在那里免费的情况是不敏感的。
不隶属于 dba.stackexchange