我想搜索文本,以找出何时上面的特定单词。 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";

至于为什么您的示例不起作用,我的解释方式是“任何带有一个或多个大写字母的字符串,然后是免费的”,但是当然,在那里免费的情况是不敏感的。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top