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