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

求教or的用法,该怎么解决

2013-10-15 
求教or的用法请高手帮看看,我想排除“树根”和“树瘤”的记录条,但结果老不对,即树瘤的记录老是出再,错出哪了?

求教or的用法
请高手帮看看,我想排除“树根”和“树瘤”的记录条,但结果老不对,即树瘤的记录老是出再,错出哪了?
id   name 
001  栎木树根
001  栎木树瘤
001  栎木原木

SELECT ID,NAME FROM TEMP
WHERE ID='001'
AND (NAME NOT LIKE '%树根%' OR NAME NOT LIKE '%树瘤%')

[解决办法]
SELECT ID,NAME FROM TEMP
WHERE ID='001'
AND (NAME NOT LIKE '%树根%' AND NAME NOT LIKE '%树瘤%')
[解决办法]

----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-10-14 12:54:00
-- Version:
--      Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64) 
--Jun 10 2013 20:09:10 
--Copyright (c) Microsoft Corporation
--Enterprise Evaluation Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([id] varchar(3),[name] varchar(8))
insert [huang]
select '001','栎木树根' union all
select '001','栎木树瘤' union all
select '001','栎木原木'
--------------开始查询--------------------------

select * from [huang]
WHERE name NOT LIKE '%树瘤%' and name  NOT LIKE '%树根%'
----------------结果----------------------------
/* 
id   name
---- --------
001  栎木原木

*/

[解决办法]
引用:
请高手帮看看,我想排除“树根”和“树瘤”的记录条,但结果老不对,即树瘤的记录老是出再,错出哪了?
id   name 
001  栎木树根
001  栎木树瘤
001  栎木原木

SELECT ID,NAME FROM TEMP
WHERE ID='001'
AND (NAME NOT LIKE '%树根%' OR NAME NOT LIKE '%树瘤%')



SELECT * FROM TB WHERE NAME NOT LIKE '%树[根瘤]%'


[解决办法]

把语句中的or改为and,

之所以用or有问题是因为,or是或者的意思,就是去掉树根或者去掉树瘤,那么这样树瘤还是有的,

而and的意思是同时去掉树根和树瘤的。
SELECT ID,NAME FROM TEMP
WHERE ID='001'
AND (NAME NOT LIKE '%树根%' and NAME NOT LIKE '%树瘤%')

热点排行