查找包含三个或更多单词的所有客户名称(例如King George V)

时间:2014-02-28 08:01:36

标签: mysql sql

的模式:

  

客户(姓名,邮政,城市)

找到什么:

查找包含三个或更多单词的所有客户名称(例如King George V)。

我尝试了什么:

select name from customers 
 where name like 
  '%[A-Za-z0-9][A-Za-z0-9]% %[A-Za-z0-9][A-Za-z0-9]% %[A-Za-z0-9][A-Za-z0-9]%'

让我感到惊讶的是:

如果我正在尝试两个单词(从我的查询中移除最后一个%[A-Za-z0-9]%),它的工作正常,但它不适用于三个单词:(

4 个答案:

答案 0 :(得分:2)

MySQL解决方案

如果name的单词由 space 字符分隔,则

尝试以下方法:

select name from customers 
where ( length( name )
        -
        length( replace( name, ' ', '' ) ) + 1
      ) >= 3

答案 1 :(得分:0)

在t-sql中,like子句可以包含多个通配符检查 - 例如: SELECT * FROM Customers WHERE名称如' %%%'

将返回包含两个空格的名称。

答案 2 :(得分:0)

如果您与名称之间的间距保持一致,则可以使用此逻辑

SELECT  LENGTH(name)-LENGTH(REPLACE(name,' ',''))
FROM customers

答案 3 :(得分:0)

或者如果你的sql没有长度功能(这是我在网上练习时的情况......你也可以试试这个......)灵感来自上面的答案

SELECT name FROM customers WHERE (replace(name,' ','*')) LIKE '%*%*%'