关于SQL通配符的使用

malaluka 2019-01-07 03:46:34

比如我们都知道的:

select name
from tablename
where name like 'a[^1,2,3]c'

表示的是选取name字段中name值不包含a1c,a2c,a3c的值,但是表示的都是单字符


如果我希望搜索的是ac中间不能包含bd,em,xls等多字符时,应该如何操作呢,求大神解答。。。谢谢
...全文
382 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hayley_244 2019-01-08
  • 打赏
  • 举报
回复
感谢分享!写得很详细!
eaglexie 2019-01-07
  • 打赏
  • 举报
回复
学习一下,这个方便多了
Dear SQL(燊) 2019-01-07
  • 打赏
  • 举报
回复
也可以用left join ,在参数表(如下:para)
;
with datas as(
	select [name]='a123c' union all
	select [name]='aedc' union all
	select [name]='axxc' union all
	select [name]='a32c' union all
	select [name]='axjc' 
),para as(
	select mark='aedc' union  all
	select mark='a32c'

)
select a.*
from datas a
left join para b on a.[name]=b.mark
where b.mark is null

name
-----
a123c
axxc
axjc

吉普赛的歌 2019-01-07
  • 打赏
  • 举报
回复
DECLARE @t TABLE (
	[name] NVARCHAR(100)	
)
INSERT INTO @t VALUES ('axxxc')
INSERT INTO @t VALUES ('abdc')
INSERT INTO @t VALUES ('aemc')
INSERT INTO @t VALUES ('axlsc')

;WITH cte AS(
	SELECT 'bd' AS flag
	UNION ALL
	SELECT 'em' AS flag
	UNION ALL
	SELECT 'xls' AS flag
)
SELECT * FROM @t AS a 
WHERE a.[name] LIKE 'a%c'AND NOT EXISTS(
	SELECT 1 FROM cte AS b WHERE a.[name] = 'a'+b.flag+'c'
)
/*
name
-----
axxxc
*/

	

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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