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

Thisisaexercise:Ships(name,class,launched)Findthenamesofallshipswhosenameconsistsofth... 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测试的

谢谢大家了
展开
 我来答
a_day_by_day
2009-05-19 · TA获得超过104个赞
知道答主
回答量:50
采纳率:0%
帮助的人:0
展开全部
假设有表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

希望以上对你有所帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bjxuen
2009-05-19
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
如果都是空格来区分就好办,空格数两,如果有两个空格就代表姓名中三个词
where length(name) - length(replace('name,' ','')) = 2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qizhuganji
2009-05-19 · TA获得超过375个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:138万
展开全部
判断字符串的空格数,如果有两个空格则代表姓名中有三个词
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caoguangab
2009-05-19 · TA获得超过188个赞
知道答主
回答量:312
采纳率:0%
帮助的人:198万
展开全部
like '%"& 变量 &"%'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
RapiD小猫
2009-05-19
知道答主
回答量:49
采纳率:0%
帮助的人:26.7万
展开全部
用split("")函数 你去网上搜搜它的具体用法和代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式