求助:查询包含的字符

sheng_dh 冀雅 IT  2018-06-14 09:50:16
select * from xx where a like '%' + @a +'%'
上面已固定;

a
--------
b
b1
c
c2

@a='b'时:
a
--------
b
b1

@a等于什么时能只查到记录b?(查询语句不修改的情况下)

...全文
973 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shinger126 2018-06-14
引用 楼主 sheng_dh 的回复:
select * from xx where a like '%' + @a +'%' 上面已固定; a -------- b b1 c c2 @a='b'时: a -------- b b1 @a等于什么时能只查到记录b?(查询语句不修改的情况下)
查询语句不修改的话,无论什么情况下,查询结果都是b和b1. 如果要只查到记录b,那就只能用条件b=@a
回复
mynamexuerui 2018-06-14
引用 4 楼 mynamexuerui 的回复:
[quote=引用 3 楼 mynamexuerui 的回复:] like可以使用正则表达式进行过滤

create table #B(b char(10))
insert into #B(b)
select 'b'
union all
select 'b1'
select * from #B where b like '%b^%'
drop table #B
就是@a = b^[/quote] 刚刚没跑,应该是
select * from #B where b like '%b[^0-9]%'
@a = b[^0-9]
回复
zjcxc 2018-06-14
楼上用的什么版本? sql server 2017 中都没这效果
回复
mynamexuerui 2018-06-14
引用 3 楼 mynamexuerui 的回复:
like可以使用正则表达式进行过滤

create table #B(b char(10))
insert into #B(b)
select 'b'
union all
select 'b1'
select * from #B where b like '%b^%'
drop table #B
就是@a = b^
回复
mynamexuerui 2018-06-14
like可以使用正则表达式进行过滤

create table #B(b char(10))
insert into #B(b)
select 'b'
union all
select 'b1'
select * from #B where b like '%b^%'
drop table #B
回复
吉普赛的歌 2018-06-14
你还是没有把你的问题描述清楚。 你到底是碰到了 这个语句只能查到 b 的情况, 还是想知道这个语句如何才能只查到 b ?
回复
卖水果的net 2018-06-14
不会的,你把你的数据,以 insert 形式贴出来。
回复
二月十六 2018-06-14
a两边都加了%,要是能匹配到b,就应该也能匹配到b1,所以够呛能实现这个需求……看看其他人谁有办法
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2018-06-14 09:50
社区公告
暂无公告