SELECT name FROM clients;
表客户
id | name |
1 John
2 John Bravo
3 John Alves
4 Jo
在postgres中,如何只选择包含多个单词的名称?例如。这应该是输出:
John Bravo
John ALves
答案 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) <> ''