首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请帮忙看一下下列sql语句有什么东东多谢

2012-02-21 
请帮忙看一下下列sql语句有什么错误谢谢a表中有如下几条记录MCBHjc/m1kv/s2tm/ty3rt/b4ts/m5b表中字段bhna

请帮忙看一下下列sql语句有什么错误谢谢
a表中有如下几条记录
MC             BH
jc/m         1
kv/s         2
tm/ty       3
rt/b         4
ts/m         5

b表中字段
bh     name
  1       M
  3       TS

我想查询a表中的MC中   不包有   b表中name字段下的记录

SELECT   *
FROM   a   CROSS   JOIN
            b
WHERE   (a.mc   not     LIKE   '% '   +   name   +   '% ')    
这样不能查询出所想要的结果

[解决办法]
select a.* from a,b where a.BH = b.bh and charindex(b.name,a.MC)> 0

[解决办法]
select * from a where mc not in (select name from b)
[解决办法]
drop table a,b
go
create table a(MC varchar(10),BH int)
insert into a
select 'jc/m ',1
union all select 'kv/s ',2
union all select 'tm/ty ',3
union all select 'rt/b ',4
union all select 'ts/m ',5
create table b(bh int,name varchar(10))
insert into b
select 1, 'M '
union all select 3, 'TS '

select * from a
where not exists(select 1 from b where charindex(b.name,a.mc)> 0)
/*
MC BH
---------- -----------
kv/s 2
rt/b 4

(所影响的行数为 2 行)
*/
[解决办法]
select MC ,BH
from a
where left(MC,charindex( '/ ',MC)-1) not in (select name from b)
and right(MC,charindex( '/ ',reverse(MC))-1) not in (select name from b)
[解决办法]
Create Table a
(MCVarchar(10),
BH Int)
Insert a Select 'jc/m ', 1
Union All Select 'kv/s ', 2
Union All Select 'tm/ty ', 3
Union All Select 'rt/b ', 4
Union All Select 'ts/m ', 5

Create Table b
(bhInt,
name Varchar(10))
Insert b Select 1, 'M '
Union All Select 3, 'TS '
GO
SELECT a.* FROM a
Where NOT Exists(Select name From b Where '/ ' + a.mc + '/ ' Like '%/ ' + name + '/% ')

SELECT a.* FROM a
Where NOT Exists(Select name From b Where CharIndex( '/ ' + name + '/ ', '/ ' + a.mc + '/ ') > 0)
GO
Drop Table a, b
/*
MCBH
kv/s2
tm/ty3
rt/b4
*/

热点排行