[.net] 데이터베이스에서 데이터를 검색 할 때 변환 또는 변환 하시겠습니까?


Answers

네가 진술 한 이유 때문에 나는 항상 던지기를 할 것이다. 내가 알아야 할 잡동사니는 다음과 같습니다.

  1. 분명히 DBNull을 처리 할 수 ​​있어야합니다 (예 : Convert.IsDBNull로 테스트)

  2. ExecuteScalar의 경우 DBNull뿐만 아니라 null을 확인해야한다고 생각합니다.

  3. SQL Server @@ IDENTITY 및 SCOPE_IDENTITY 함수는 INT로 선언 된 열의 경우에도 숫자 (십진수)를 반환합니다. 이 경우 "(int) (십진수) 값"을 두 번 캐스팅하거나 T-SQL 코드에서이를 처리 할 수 ​​있습니다 (예 :).

    INSERT INTO MyTable ... MyTable에서 SELECT AutoIdColumn WHERE AutoIdColumn = SCOPE_IDENTITY ()

또는

INSERT INTO MyTable ...
SELECT CAST(SCOPE_IDENTITY() AS INT)
Question

데이터베이스에서 검색 한 DataTable의 개체에 액세스 할 때 원하는 형식으로 개체를 캐스팅하지 않을 이유가 있습니까? 아니면 변환 할 이유가 있습니까? 나는 우리가 어떤 데이터 타입을 사용하고 있는지를 알 때 규칙이 전달된다는 것을 안다. 그리고 데이터 타입을 변경하려고 할 때 변환하지 않는다. 어떤 데이터 형식이 열에 저장되어 있는지를 알면 캐스팅이 적절하다고 판단되지만 DB 형식 문제가있어이 데이터 형식에 의존 할 수 없습니까?




CASTCONVERT 는 명시 적으로 한 데이터 유형의 표현식을 다른 유형으로 변환하는 데 사용됩니다. 그러나 CONVERT 를 사용하여 형식 스타일을 지정할 수도 있습니다.

CAST 구문 :

CAST ( expression AS data_type [ (length ) ])

CONVERT 구문 :

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )



RDBMS에서 검색 할 때 데이터베이스 드라이버가 기본 유형과 요청 된 유형 간의 정렬을 처리하도록해야합니다.

CAST는 SQL 표준에 의해 승인되며 가장 많은 수의 RDBMS 플랫폼에서 작동합니다.

CONVERT는 더 적은 플랫폼에서만 사용할 수 있습니다.

다중 플랫폼 컨 캐어 데이션이있는 경우 CONVERT는 CAST로 수행 할 수없는 사용자 정의 형식 지정과 같은 특수한 경우에만 사용해야합니다.