仅当字段包含多个单词时才选择

时间:2013-12-20 10:16:44

标签: sql postgresql

SELECT name FROM clients;

表客户

id | name | 
1    John  
2    John Bravo
3    John Alves
4    Jo

在postgres中,如何只选择包含多个单词的名称?例如。这应该是输出:

John Bravo
John ALves

4 个答案:

答案 0 :(得分:1)

我认为只测试名称是否包含空格:where name like '% %' 但如果您的名字可以包含空格字符或名称后面,这会给您一些问题,例如:'JOHN'或'Luck'

答案 1 :(得分:1)

如果 word 对你来说意味着一个以空格分隔的标记,那么下面的方法就可以了:

SELECT name FROM clients WHERE name LIKE '% %';

但是这也会给你那些空名只有空格的人。同样在性能方面,这将是一个代价高昂的查询。

答案 2 :(得分:0)

首先,你可能需要找到列中的单词数,然后只选择单词数大于1的位置。

例如:

SELECT LENGTH(name) - LENGTH(REPLACE(name , ' ', ''))+1 FROM clients;

这将返回每行中的字数,我们在字段name中有。

然后你可以继续将它放在嵌套的select SQL语句中,如:

SELECT LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1 as mycheck, name FROM clients where (SELECT LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1)>1

仅在单词大于1(> 1)的情况下返回。否则,您可以使用> 2来返回超过2个字的列。

答案 3 :(得分:0)

LIKE 是一个选项,您也可以使用 split_part

SELECT name FROM clients WHERE split_part(trim(name), ' ', 2) <> ''