求助:查询包含的字符

sheng_dh 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?(查询语句不修改的情况下)

...全文
995 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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,所以够呛能实现这个需求……看看其他人谁有办法

22,210

社区成员

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

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