sql-server 오라클 - T-SQL에서 같지 않음!=또는<>을 사용해야합니까?




않은 비교 (13)

한 가지 대안은 <> 또는 != 이외의 NULLIF 연산자를 사용하여 두 인수가 Microsoft Docs에서 NULLIF와 같으면 NULL을 반환하는 것입니다. 그래서 WHERE 절은 다음과 같이 <>!= 대해 수정할 수 있다고 생각합니다.

NULLIF(arg1, arg2) IS NOT NULL

내가 찾은 것처럼, <>!= 것은 경우에 따라 날짜에 대해 작동하지 않습니다. 그러므로 위의 표현을 사용하는 것이 필요하다.

나는 둘 다 사용하는 SQL 을 보았습니다 !=<>동등하지 않습니다 . 선호되는 구문은 무엇이며 그 이유는 무엇입니까?

<>Visual Basic 상기시켜주기 때문에 !=


당신은 T-SQL에서 당신이 좋아하는 것을 사용할 수 있습니다. 설명서에 따르면 둘 다 같은 방식으로 작동합니다. 내가 좋아하는 != , "내 평등하지 않은"(C / C ++ / C # 기반) 마음으로 읽으므로 데이터베이스 전문가가 <> 선호하는 것 같습니다.


둘 다 T-SQL에서 허용됩니다. 그러나 <> 를 사용 하면 != 보다 훨씬 빠르게 작동합니다 . 방금 != 을 (를) 사용하는 복잡한 쿼리를 실행했으며 실행 평균 약 16 초가 걸렸습니다. 나는 그것들을 <> 바꿨고 질의는 평균 4 초 정도 걸렸습니다. 그것은 엄청난 개선입니다!


!= 는 ANSI가 아니지만 SQL의 진정한 의미에서 읽을 수있는 언어입니다. 그것은 비명 한 평등. <> 는 그것이 이상하다고 말하는 나보다 적다는 것을 말한다. 그 의도는 그것이 같거나 그보다 크지 않다는 것을 알고 있습니다. 그러나 그것은 정말로 간단한 것을 말하기에 매우 복잡한 방법입니다.

나는 긴 SQL 쿼리를 가져 와서 XML 파일에 멋지게 배치해야만했다. 내가 가지 않을 어리석은 이유가있다.

XML이 <> 와 전혀 관련이 없다고 말할 수는있다. 나는 그것을 바꿔야 만했다.


나는 C 구문 != 이 유닉스의 전통으로 인해 SQL Server에 있다는 것을 이해합니다 != (Sybase SQL Server 시절, Microsoft SQL Server 6.5 이전).



Microsoft는 테이블 제약 조건에서 입증 된 것처럼 <> != to != 을 선호합니다. 필자는 개인적으로 " != 같지 않음"으로 명확하게 읽었으므로 사용하는 것을 선호하지만 [field1 != field2] 를 입력하고 constrait로 저장하면 다음 번 쿼리 할 때 [field1 <> field2] . 이 말은 올바른 방법은 <> 입니다.


'<>'SQL-92 표준에 따르며 '!='proprietary T-SQL 연산자입니다. 다른 데이터베이스에서도 사용할 수 있지만, 표준이 아니므로 사안별로 적용해야합니다.

대부분의 경우, 어떤 데이터베이스에 연결되어 있는지 알게되므로 문제는 아닙니다. 최악의 경우 SQL을 검색하고 바꿔야 할 수도 있습니다.




대부분의 데이터베이스는 != (인기있는 프로그래밍 언어) 및 <> (ANSI)를 지원합니다.

!=<> 모두 지원하는 데이터베이스 :

ANSI 표준 연산자를 독점적으로 지원하는 데이터베이스 :

  • IBM DB2 UDB 9.5 : <>
  • Microsoft Access 2010 : <>

그것들은 똑같은 방식으로 작동하지만, != 은 정확히 "같지 않음"을 의미하고, <> 는 저장된 값보다 크고 작음을 의미합니다.

>= 또는 <= 고려해보십시오. 인덱스에 인덱스를 인자로 할 때 ... <> 가 (올바른 색인을 사용하여) 더 빨리 실행되는 경우가 있지만 일부 경우에는 (인덱스가없는 경우) 실행됩니다. 똑같다.

이것은 또한 데이터베이스 시스템이 !=<> 값을 읽는 방법에 달려 있습니다. 데이터베이스 제공 업체는 바로 가기를 생성하고 기능을 동일하게 만들 수 있으므로 어느 쪽의 이점도 없습니다. PostgreSQL과 SQL Server는 이것을 단축하지 않습니다. 위와 같이 읽습니다.


예:

ALTER TABLE [Employees] ADD Seniority int not null default 0 GO






sql sql-server tsql