我有一个名为post的表,其中有一个名为title的列。我想选择所有只有1个单词作为标题的帖子。所以例如'cat','dog'。有些帖子有多个,比如“猫和狗都不好”,这个我不想选择。仅发布一个单词标题。我怎么能用mysql这样做?
答案 0 :(得分:7)
SELECT * FROM post WHERE title NOT LIKE '% %'
选择标题没有空格的行。
修改强>
如果一个单词最后有一个空格,如
cat
,那么?
然后你用一个用于制作愚蠢输入的tunafish用户,以及你的程序员没有修改输入。
开玩笑吧。如果有可能,这应该有效:SELECT * FROM post WHERE title RLIKE '^[[=space=]]*[^[=space=]]+[[=space=]]*$'
答案 1 :(得分:1)
如果一个单词带有空格,最后就像“猫”一样。
<强>查询强>
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 强>
如果开始和结束都有空格。然后,
<强>查询强>
SELECT * FROM tbl WHERE TRIM(BOTH ' ' FROM title) NOT LIKE '% %';
OR
SELECT * FROM tbl WHERE TRIM(title) NOT LIKE '% %';
<强> Fiddle Demo 2 强>
答案 2 :(得分:0)
如何使用正则表达式进行匹配。我假设用一个词你的意思是它不应该有空格。您可以将其与以下表达式匹配:
SELECT *
FROM myTable
WHERE Title NOT REGEXPR '.* .*'
这应该捕获任何有空格的标题,并从结果中排除。