撰写查询时,如果我使用<>或!=当我的意思是“不等于”?
根据以下示例,无论是否使用<>,空值似乎都不会受到影响或!=。这是一件美学事吗?
declare @fruit table
(
FruitID int,
FruitName varchar(50)
)
insert into @fruit (FruitID, FruitName) Values (1, 'Apple')
insert into @fruit (FruitID, FruitName) Values (2, 'Orange')
insert into @fruit (FruitID, FruitName) Values (3, 'Pineapple')
insert into @fruit (FruitID, FruitName) Values (null, 'Not a Fruit')
select *
from @fruit
where fruitid<>2
select *
from @fruit
where fruitid!=2
答案 0 :(得分:8)
<>
运算符是正式sql标准定义的运算符。 !=
运算符是许多开发人员更熟悉的别名。它们以相同的方式执行相同的操作,并且在我支持的任何dbms系统上都没有性能或行为差异。
大多数数据库系统都支持!=
,但也有例外。因此,理论上,<>
应该更便携,因为它是标准。在实践中,我猜大概只有实现!=
的人才有,因为只有实现<>
。
我来自C ++背景,在我早期使用SQL时,我起初并不知道<>
存在。离开学校后不久我学会了<>
,当我不得不花时间在VB代码库上工作时,当时认为这只是开发人员的一个怪癖,他们更喜欢VB风格sql运算符与他们的VB客户端代码。在我仍然使用!=
之后很长一段时间。后来我才知道<>
是标准,并且自从86年以来可能已经被使用了,当时VB还只是“BASIC”。我几乎完全使用<>
。