查询以检查某行是否有2个单词

时间:2015-03-05 14:51:41

标签: mysql sql

如何返回列中有2个单词(即用空格分隔的字符串)的行?

必须纯粹使用SQL。

SELECT * FROM table WHERE name (has 2 strings in it);

5 个答案:

答案 0 :(得分:3)

  

查询时我不知道名字。它是一个很大的数据集。我只需要检查名称是否包含空格键(来自评论)

如果要区分包含一部分和三部分名称两部分的名称,可以使用regular expression

SELECT * FROM my_table WHERE name REGEXP '^[^ ]+[ ]+[^ ]+$'

当整个字符串由两个不包含空格的非空部分组成时,此正则表达式匹配,其中一个或多个空格将它们分开。

答案 1 :(得分:1)

这对我来说非常有用

您可以使用' AND'条件和具有通配符的运算符(%)。

SELECT * FROM table_name WHERE name LIKE '%Word1%' AND name LIKE '%Word2%'

答案 2 :(得分:0)

简单地说:

...
WHERE [name] LIKE '%Word1%'
AND [name] LIKE '%Word2%'

答案 3 :(得分:0)

SELECT * FROM table WHERE concat(' ',name,' ') like '% str1 %'
                      AND concat(' ',name,' ') like '% str2 %'

额外的空白可以分开单词。

答案 4 :(得分:0)

您可以使用以下技术

 mysql> select length('first name')-length(replace('first name',' ','')) as diff;
    +------+
    | diff |
    +------+
    |    1 |
    +------+

即。替换空格后得到实际名称和名称的区别,如果是1那么你的值为firstname lastname

因此查询可能看起来像

select * from table
where
length(col_name)-length(replace(col_name,' ','')) = 1