如何用sql语句模糊查询姓名中有三个词的人名,比如“king george V”,where name like'...'

This is a exercise:
Ships(name,class,launched)
Find the names of all ships whose name consists of three or more words(e.g.,King George V).
呵呵,各位和我一样想复杂了,直接 name like '% % %'之间用空格就可以了,我用mysql测试的

谢谢大家了
最新回答
苍山有井名为空

2024-08-17 03:25:44

假设有表T,A为人名字段,人名中的空格可能不止一个,可能有多个,直接用空格数,或是长度数来计算,可能潜在一些问题,所以应该先作简单处理一下,把所有不同长度(这里假设最长为10)的空格,转成一个空格,再计算长度.
select * from
(
select 'A'=
case
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
when charindex(' ',A,1)>0 then replace(A,' ',' ')
end
from T
) M
where len(A)-len(replace(A,' ',''))>=2

希望以上对你有所帮助!
紫色的梦幻

2024-08-17 03:18:32

如果都是空格来区分就好办,空格数两,如果有两个空格就代表姓名中三个词
where length(name) - length(replace('name,' ','')) = 2
怜自惜

2024-08-17 01:49:43

判断字符串的空格数,如果有两个空格则代表姓名中有三个词
三天三夜,三斤作业

2024-08-17 02:45:52

like '%"& 变量 &"%'
栖止你掌

2024-08-17 03:19:47

用split("")函数 你去网上搜搜它的具体用法和代码