Vi SQL
que usa ambos !=
e <>
para não ser igual . Qual é a sintaxe preferida e por quê?
Eu gosto !=
, porque <>
me lembra Visual Basic
.
sql
sql-server
tsql
Bob The Janitor
fonte
fonte
NOT (A = B)
,.Respostas:
Tecnicamente, eles funcionam da mesma maneira se você estiver usando o SQL Server AKA T-SQL. Se você o estiver usando em procedimentos armazenados, não há razão de desempenho para usar um sobre o outro. Em seguida, tudo se resume à preferência pessoal. Eu prefiro usar <>, pois é compatível com ANSI.
Você pode encontrar links para os vários padrões ANSI em ...
http://en.wikipedia.org/wiki/SQL
fonte
!=
por causa de sua existência em todas as linguagens influenciadas por C que usei, e porque a documentação do Python diz: "Os formulários<>
e!=
são equivalentes; por consistência com C,!=
é preferido; o que!=
é mencionado abaixo<>
também é aceito. A<>
ortografia é considerada obsoleta. " Mas SQL não é Python!<>
mais!=
especificamente para o cumprimento ANSI, por exemplo, no Microsoft Press kit de treinamento para 70-461 exame, "Consultando o Microsoft SQL Server", eles dizem "Como um exemplo de quando a escolha da forma padrão, T-SQL suporta dois“não igual a ”operadores: <> e! =. O primeiro é padrão e o segundo não.A maioria dos bancos de dados suporta
!=
(linguagens de programação populares) e<>
(ANSI).Bancos de dados que suportam ambos
!=
e<>
:!=
e<>
!=
e<>
!=
e<>
!=
e<>
!=
e<>
!=
e<>
!=
e<>
!=
e<>
!=
e<>
Bancos de dados que suportam o operador padrão ANSI, exclusivamente :
<>
<>
fonte
NOT (a = b)
vez de(a <> b)
ou(a != b)
. É o mesmo internamente?'<>'
é do padrão SQL-92 e'!='
é um operador T-SQL proprietário . Também está disponível em outros bancos de dados, mas como não é padrão, você deve tomá-lo caso a caso.Na maioria dos casos, você saberá a qual banco de dados está se conectando, e isso não é realmente um problema. Na pior das hipóteses, talvez você precise fazer uma pesquisa e substituir no seu SQL.
fonte
!=
parte dele. Mesmo que, para todos os efeitos práticos, seja um padrão padrão, não devemos confundir o que são e os que não são recursos padrão.O ANSI SQL Standard define
<>
como o operador "não é igual a",http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (
5.2 <token> and <separator>
)Não há
!=
operador de acordo com o padrão ANSI / SQL 92.fonte
<>
é o SQL válido de acordo com o padrão SQL-92.http://msdn.microsoft.com/en-us/library/aa276846(SQL.80).aspx
fonte
Eles são válidos e iguais em relação ao SQL Server ,
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
fonte
Parece que a Microsoft-se preferir
<>
a!=
como evidenciado em suas restrições de tabela. Pessoalmente, prefiro usar!=
porque li claramente que "não é igual", mas se você o inserir[field1 != field2]
e salvar como construtor, na próxima vez em que for consultá-lo, ele aparecerá como[field1 <> field2]
. Isso me diz que a maneira correta de fazer isso é<>
.fonte
!=
, apesar de não ser ANSI, está mais no verdadeiro espírito do SQL como uma linguagem legível. Grita não é igual.<>
diz que é para mim (menor que, maior que) o que é estranho. Eu sei que a intenção é que seja menor ou maior do que não seja igual, mas essa é uma maneira realmente complicada de dizer algo realmente simples.Eu apenas tive que fazer algumas consultas SQL longas e colocá-las com carinho em um arquivo XML por várias razões estúpidas nas quais não vou entrar.
Basta dizer que o XML não está de acordo com
<>
isso e eu tive que alterá-los!=
e me verificar antes de me estragar.fonte
Você pode usar o que quiser no T-SQL. A documentação diz que ambos funcionam da mesma maneira. Eu prefiro
!=
, porque lê "não é igual" à minha mente (baseada em C / C ++ / C #), mas os gurus do banco de dados parecem preferir<>
.fonte
Entendo que a sintaxe C
!=
está no SQL Server devido a sua herança Unix (nos dias do Sybase SQL Server, antes do Microsoft SQL Server 6.5).fonte
Uma alternativa seria usar o operador NULLIF que não seja
<>
ou!=
que retorne NULL se os dois argumentos forem iguais a NULLIF no Microsoft Docs . Portanto, acredito que a cláusula WHERE pode ser modificada para<>
e da!=
seguinte forma:Como eu descobri, usar
<>
e!=
não funciona para a data em alguns casos. Portanto, o uso da expressão acima faz o necessário.fonte
<>
em relação ao uso do índice em todos os casos de canto. Além disso, a legibilidade é certamente muito pior ...Eu preferi usar em
!=
vez de,<>
porque às vezes eu uso a<s></s>
sintaxe para escrever comandos SQL. O uso!=
é mais útil para evitar erros de sintaxe nesse caso.fonte
Ambos são aceitos no T-SQL. No entanto, parece que o uso
<>
funciona muito mais rápido que!=
. Acabei de executar uma consulta complexa em uso!=
e demorou cerca de 16 segundos em média para ser executada. Alterei-os para<>
e a consulta agora leva em média 4 segundos para ser executada. Isso é uma grande melhoria!fonte
Embora funcionem da mesma maneira,
!=
significa exatamente "diferente de", enquanto<>
significa maior que e menor que o valor armazenado.Considere
>=
ou<=
, e isso fará sentido ao incluir nos seus índices as consultas ...<>
será executada mais rapidamente em alguns casos (com o índice correto), mas em outros casos (sem índice) eles serão executados da mesma forma.Isso também depende de como o sistema de bancos de dados lê os valores
!=
e<>
. O provedor do banco de dados pode apenas atalho e fazê-los funcionar da mesma maneira, para que não haja nenhum benefício. O PostgreSQL e o SQL Server não atalhos; é lido como aparece acima.fonte