如何返回列中有2个单词(即用空格分隔的字符串)的行?
必须纯粹使用SQL。
SELECT * FROM table WHERE name (has 2 strings in it);
答案 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