Mysql 查找由三个或更多单词组成的所有客户名称(例如乔治五世国王) 模式:

Mysql 查找由三个或更多单词组成的所有客户名称(例如乔治五世国王) 模式:,mysql,sql,Mysql,Sql,客户(姓名、邮箱ID、城市) 查找内容: 查找由三个或三个以上单词组成的所有客户名称(例如King George V) 我尝试的是: 令我惊讶的是: 如果我尝试输入两个单词(从我的查询中删除最后一个%[A-Za-z0-9]%),它可以正常工作,但不能输入三个单词:(在t-sql中,like子句可以包含多个通配符检查-例如: 从名称为“%”的客户中选择* 将返回包含两个空格的名称。MySQL解决方案: 如果名称中的单词由空格分隔,则 请尝试以下操作: select name from custom

客户(姓名、邮箱ID、城市)

查找内容: 查找由三个或三个以上单词组成的所有客户名称(例如
King George V

我尝试的是: 令我惊讶的是:
如果我尝试输入两个单词(从我的查询中删除最后一个
%[A-Za-z0-9]%
),它可以正常工作,但不能输入三个单词:(

在t-sql中,like子句可以包含多个通配符检查-例如: 从名称为“%”的客户中选择*


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

MySQL解决方案

如果
名称
中的单词由空格分隔,则

请尝试以下操作:

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

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

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

或者,如果您的sql没有长度函数(这是我在做在线练习时遇到的情况…),您也可以根据上面的答案进行尝试

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