select 个词条

select entries that has one word

我有一个名为 post 的 table,其中有一列名为标题。我想 select 所有 post 只有 1 个词作为标题。因此,例如 'cat' , 'dog' 。有post的还有不止一个比如'cat and dog are not good',这个我不想select。仅 post 一字标题。我怎样才能用 mysql 做到这一点?

SELECT * FROM post WHERE title NOT LIKE '% %'

选择标题没有空格的行。

编辑:

If a single word with a space in the end like cat, then?

然后你用金枪鱼打你的用户,因为他们做出了愚蠢的输入,还因为你的程序员没有修剪输入。

开玩笑的。如果这是可能的,这应该有效:

SELECT * FROM post WHERE title RLIKE '^[[=space=]]*[^[=space=]]+[[=space=]]*$'

使用正则表达式进行匹配怎么样?我假设你用一个词来表示它不应该有 spaces 在里面。您可以将其与以下表达式匹配:

SELECT *
FROM myTable
WHERE Title NOT REGEXPR '.* .*'

这应该会捕获其中包含 space 的任何标题并将其从结果中排除。

如果一个单词最后有一个space比如'cat '。

查询

CREATE TABLE tbl(title VARCHAR(250));

INSERT INTO tbl VALUES('cat ');
INSERT INTO tbl VALUES('dog');
INSERT INTO tbl VALUES('cat and dog');

SELECT * FROM tbl WHERE TRIM(TRAILING ' ' FROM title) NOT LIKE '% %';

Fiddle Demo 1


If space 在开始和结束。那么,

查询

SELECT * FROM tbl WHERE TRIM(BOTH ' ' FROM title) NOT LIKE '% %';

SELECT * FROM tbl WHERE TRIM(title) NOT LIKE '% %';

Fiddle Demo 2