有个sql字符匹配的搞不定 请高人指点 谢谢

hyuk2460 2009-11-11 07:32:47
需求是这样的,系统的员工名称要按姓和名查询,名称的格式是 FirstName LastName 中间是空格的格式,FirstName和LastName分别只有一个单词,还有系统级员工superadmin只有一个单词,但这个按FirstName算,现在要求是输入firstName和lastName进行右模糊匹配,请问SQL怎么写啊?
我想到的是这样的:
按firstName查:super(staff_name) like '%'|| super(:firstName) ||'%'
按lastName查: super(staff_name) like '%'||' '||'%'|| super(:lastName) ||'%'
好像不是很严谨,请大虾们帮帮忙
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL77 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hyuk2460 的回复:]

局方要求的
大哥
[/Quote]

DECLARE @TB TABLE(NAME VARCHAR(20))
INSERT @TB
SELECT 'Rose Kate' UNION ALL
SELECT 'Rose Cate' UNION ALL
SELECT 'Wid Cate'

DECLARE @FIRSTNAME VARCHAR(500)
SET @FIRSTNAME='ROSE'
DECLARE @LASTNAME VARCHAR(500)
SET @LASTNAME='CATE'
SELECT * FROM @TB WHERE SUBSTRING(NAME,1,CHARINDEX(' ',NAME)-1)=@FIRSTNAME
SELECT * FROM @TB WHERE REPLACE(STUFF(NAME,1,CHARINDEX(' ',NAME),''),' ','')=@LASTNAME



/*

(所影响的行数为 3 行)

NAME
--------------------
Rose Kate
Rose Cate

(所影响的行数为 2 行)

NAME
--------------------
Rose Cate
Wid Cate

(所影响的行数为 2 行)

*/


如果是特殊的你判断一下吧
laker_914 2009-11-11
  • 打赏
  • 举报
回复

SELECT * FROM TB WHERE NAME LIKE ''+firstName+' %'



这样不行吗??
hyuk2460 2009-11-11
  • 打赏
  • 举报
回复

局方要求的
大哥
SQL77 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hyuk2460 的回复:]
是分开查啊
一个按输入firstName
一个输入lastName
谢谢
举个例子吧
Rose Kate
Rose Cate
Wid  Cate
superadmin

按firstName输入 rose或rose的几个字母 能查到 Rose Kate和 Rose Cate
同理按lastName输入 cate或cate得几个字母 能查到 Rose Cate和 Wid Cate
例外按firstName输入 superadmin 可查到 superadmin
说的应该清楚了吧
[/Quote]

那你还管什么FIRSTNAME,

直接用LIKE肯定能查出来的
hyuk2460 2009-11-11
  • 打赏
  • 举报
回复
是分开查啊
一个按输入firstName
一个输入lastName
谢谢
举个例子吧
Rose Kate
Rose Cate
Wid Cate
superadmin

按firstName输入 rose或rose的几个字母 能查到 Rose Kate和 Rose Cate
同理按lastName输入 cate或cate得几个字母 能查到 Rose Cate和 Wid Cate
例外按firstName输入 superadmin 可查到 superadmin
说的应该清楚了吧
SQL77 2009-11-11
  • 打赏
  • 举报
回复
SELECT * FROM TB WHERE NAME LIKE '%'+firstName+'%' AND NAME LIKE '%'+lastName+'%'
?
SQL77 2009-11-11
  • 打赏
  • 举报
回复
SELECT * FROM TB WHERE NAME LIKE '%firstName%lastName%'
?
bancxc 2009-11-11
  • 打赏
  • 举报
回复
哦 帮顶

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧