求一条SQL语句,

wxylvmnn 2012-01-18 12:19:20
有一个 限制表M,
表里就一个字段Mf存储的是

<
>
"
'等等一些特殊字符。

另有表A,有Af1,Af2,Af3,Af4这样4个字段。

能否通过一条sql语句,查出,在表A的Af2,Af3这2个字段中,是否包含限制表M里存储的特殊字符。

比如说表A有如下数据
Af1,Af2,Af3,Af4

123,>1,111,222
333,11,<22,323
555,1",<2',323
554,123,1232,323
553,123,1232,323
552,123,1232,323

希望得到
Af1,Af2,Af3,Af4

123,>1,111,222
333,11,<22,323
555,1",<2',323

...全文
54 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2012-01-18
  • 打赏
  • 举报
回复

declare @m table (Mf varchar(1))
insert into @m
select '<' union all
select '>' union all
select '"'

declare @T table (Af1 int,Af2 varchar(3),Af3 varchar(4),Af4 int)
insert into @T
select 123,'>1','111',222 union all
select 333,'11','<22',323 union all
select 555,'1"','<2',323 union all
select 554,'123','1232',323 union all
select 553,'123','1232',323 union all
select 552,'123','1232',323

select * from @T t where
(select count(1) from @m where t.Af2 like '%'+Mf+'%'
or t.Af3 like '%'+Mf+'%')>0

/*
Af1 Af2 Af3 Af4
----------- ---- ---- -----------
123 >1 111 222
333 11 <22 323
555 1" <2 323
*/
dawugui 2012-01-18
  • 打赏
  • 举报
回复
create table M(mf varchar(10))
insert into m values(',')
insert into m values('<')
insert into m values('>')
insert into m values('"')
create table a(Af1 varchar(10),Af2 varchar(10),Af3 varchar(10),Af4 varchar(10))
insert into a values('123','>1' ,'111' ,'222')
insert into a values('333','11' ,'<22' ,'323')
insert into a values('555','1"' ,'<2''','323')
insert into a values('554','123','1232','323')
insert into a values('553','123','1232','323')
insert into a values('552','123','1232','323')
go


select distinct a.* from a , m where
charindex(m.mf , a.af2) > 0
or
charindex(m.mf , a.af3) > 0

drop table m, a

/*
Af1 Af2 Af3 Af4
---------- ---------- ---------- ----------
123 >1 111 222
333 11 <22 323
555 1" <2' 323

(所影响的行数为 3 行)
*/
dawugui 2012-01-18
  • 打赏
  • 举报
回复
create table M(mf varchar(10))
insert into m values(',')
insert into m values('<')
insert into m values('>')
insert into m values('"')
create table a(Af1 varchar(10),Af2 varchar(10),Af3 varchar(10),Af4 varchar(10))
insert into a values('123','>1' ,'111' ,'222')
insert into a values('333','11' ,'<22' ,'323')
insert into a values('555','1"' ,'<2''','323')
insert into a values('554','123','1232','323')
insert into a values('553','123','1232','323')
insert into a values('552','123','1232','323')
go


select a.* from a , m where
charindex(m.mf , a.af2) > 0
or
charindex(m.mf , a.af3) > 0

drop table m, a

/*
Af1 Af2 Af3 Af4
---------- ---------- ---------- ----------
333 11 <22 323
555 1" <2' 323
123 >1 111 222
555 1" <2' 323

(所影响的行数为 4 行)
*/
dawugui 2012-01-18
  • 打赏
  • 举报
回复
select a.* from a , m where
charindex(m.mf , a.af2) > 0
or
charindex(m.mf , a.af3) > 0
wxylvmnn 2012-01-18
  • 打赏
  • 举报
回复
哎,总是有这么多高手

34,589

社区成员

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

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