select 문에서 varchar 값이없는 행 수를 계산할 때 이상한 상황이 발생했습니다. 그래, 나에게 혼란스러워하는 소리가 들리니, 예를 들어 보겠다.COUNT() NOT IN 절과 결합 된 함수가 varchar 필드 (T-SQL)에서 제대로 작동하지 않습니다.
"SomeTable"필드에 "MyField"라는 필드가 있고 MyField 값이 MyField 값에 속하지 않는 행의 수를 계산하려고한다고 가정 해 보겠습니다. 도메인은 "SomeOtherTable"의 "MyOtherField"값으로 정의됩니다. 즉, MyOtherField = {1, 2, 3}이 있다고 가정하고, MyField 값이 1, 2 또는 3이 아닌 행 수를 계산하고 싶습니다. 다음 쿼리를 사용합니다.
SELECT COUNT(*) FROM SomeTable
WHERE ([MyField] NOT IN (SELECT MyOtherField FROM SomeOtherTable))
그리고 그것은 매력처럼 작동합니다. 그러나 MyField 및 MyOtherField는 int 유형입니다. varchar 형식의 필드를 제외하고 정확히 동일한 쿼리를 실행하려고하면 잘못된 값이 있음을 알고 있지만 반환 값은 0입니다. 그러나 만약 내가 위의 질의에 "NOT"절을 단순히 남겨둔 채로 반대쪽 (얼마나 많은 행이 내가 원하는지에 반대하는 도메인에 얼마나 많은 행이 없는지)을 계산하려고하면 ... THAT 공장! ¬¬
네,이 문제에 대한 엄청난 해결 방법이 있어야합니다. 그렇지만 왜 그렇게 작동하지 않는지 알고 싶습니다. 또한 C# 코드 내부에 대부분의 쿼리가 포함되어 있기 때문에 전체 쿼리를 간단히 변경할 수는 없으며 기본적으로 소프트웨어의 다른 부분에 영향을 미치지 않을 변경 권한이있는 유일한 부분은 도메인에 해당합니다 (NOT IN 절에 포함 된 모든 것). 나는 나 자신을 분명히하고 거기에있는 누군가가 나를 도울 수 있기를 바란다.
미리 감사드립니다.
해당 필드에 대해 "SomeOtherTable"에 NULL 표시가 있습니까? –