2010-05-13 1 views
0

내 현재 프로젝트에서는 도메인에서 빈 문자열을 제외하는 것이 편리 할 것입니다. 그래서 빈 문자열은 어디서나 만나게됩니다. 예를 들어 NULL로 처리됩니다. 예를 들어 UPDATE [table] SET [Something] = '', SQL Server는 SET [Something] = NULL로 처리해야하므로 다음 SELECT에서 NULL이 [Something] 값으로 반환됩니다.빈 문자열을 모두 NULL로 저장하도록 SQL Server 2008 DB를 구성 할 수 있습니까?

트리거를 사용해야합니까? 아니면 더 좋은 방법이 있습니까?

+0

테이블은 어떻게 채워 집니까? 웹 응용 프로그램? 한 번 파일로드? –

답변

1

빈 문자열을 강제로 null로 변환하는 자동 방법이 없습니다. 그러나 값이 0보다 크거나 null 인 모든 char, varchar, nchar 및 nvarchar 열에 check 제약 조건을 추가 할 수 있습니다. 빈 문자열을 null로 변환하지 않으면 클라이언트 응용 프로그램에서 예외를 throw합니다.

check 제약 조건을 사용하는 것 외에도 빈 문자열을 NULL로 변환하는 이상적인 장소는 데이터 액세스 계층입니다. 연결을 여는 코드를 캡슐화하고 데이터베이스에 대해 무언가를 실행 한 다음 연결을 닫아야합니다. 아마도이 코드는 매개 변수화 된 쿼리에 매개 변수로 사용되는 인수 배열을 사용합니다. 이 코드에서는 데이터 유형이 문자열인지 검사 할 수 있으며, 그렇다면 null로 변환 할 수 있습니다.

1

NULL이 항상 빈 문자열과 같은 것은 아니라는 점은 주목할 가치가 있습니다 (오늘은 내일이지만 누군가 빈 문자열을 삭제하도록 혼동 할 수 있음). 예를 들어, 다음 두 상황이 동일합니까?

  1. 사용자가 입력란에 데이터를 입력하지 않았습니다.
  2. 사용자가 입력 한 다음 데이터를 제거 했습니까?

모든 빈 문자열을 NULL로 설정하기 전에 필드에 값이 있는지 여부를 알아야 할 가치가 있는지 고려해야합니다. 또한 - 단일 공백은 빈 문자열입니까? 여러 공백이 있습니까? CHR (254)?

+1

"NULL은 항상 빈 문자열과 같은 것은 아닙니다."- 이해합니다. 그러나 대부분의 경우 값은 알 수 없거나 적용 할 수 없거나 비어 있습니다. 빈 문자열이 현실감을 발휘할 수있는 경우는 거의 상상할 수 없습니다. – Ivan

0

모든 삽입 및 업데이트 표현식이이를 올바르게 처리해야합니다.

문자열 표현을 올바르게 구성하는 데 사용하는 여러 언어의 함수가 있습니다.

function IntOrNull($num) 
{ 
    return is_null($num) ? "NULL" : intval($num); 
} 

등을 확인하여 비즈니스 규칙 제로와 널 (null)에 적용 할 사이에 적절한 구분을하고 있습니다 만들기에 대한

모든 일반적인 훈계를 : PHP 그것은

function QuoteOrNull($str) 
{ 
    return empty($str) ? "NULL" : "'$str'" ; 
} 

정수 값에 대한 또 하나있다이다 두번째. 그러나 의도적으로 길이가 0 인 문자열을 삽입하는 유용한 이유를 본 적이 없습니다. 당신이 할 때, 누군가는 그들을 분류하고 싶어하고, 그러면 곤경에 처할 것 같습니다.

관련 문제