2016-11-22 1 views
0

삽입 할 필드 값 중 하나가 빈 문자열인지 확인해야하는 INSERT INTO 문이 있습니다. 그렇다면 빈 문자열 대신 실제 공간을 삽입해야합니다.SQL INSERT INTO 문 - 필드가 빈 문자열 일 때 공백을 삽입하는 방법?

EIN이 ('') 빈 문자열인지 어떻게 결정할 수 있습니까? 실제로 그렇다면 공백 ('')을 삽입합니까?

UPDATE 문

Update Vendors SET LegacyID = ds.LegacyID, ExternalID1 = ds.ExtID1, ExternalID2 = ds.ExtID2, ...) 

어떤 도움과 예제 같은이 크게 감상 할 수있다. 고맙습니다. 당신은 당신이 실제로 변경 작업이 될 것 섹션을 생략 한 있도록

+1

삽입 선택이 있습니까? 및/또는 조인 업데이트? 모든 코드를 표시해야합니다 – scaisEdge

+0

열이 빈 문자열이되지 않도록하려면 _constraint_ 또는 _trigger_를 살펴야합니까? – HABO

+0

이것은 몇 년 전의 생각이었습니다. 누군가가 "왜 이것을 했습니까?"................. – granadaCoder

답변

1

당신은 INSERTVALUES 부분도 당신의 UPDATEEIN을 포함하지 않았다.

이 때문에 필자는 실제 필드가 무엇인지 추측 할 수 있었지만 답변의 일반적인 내용은 값이 삽입 될 값 주변에 CASE 문을 사용하는 것입니다.

예 :

-- If field is '', then use ' '. 
-- Otherwise, use it as-is. 
CASE field WHEN '' THEN ' ' ELSE field END 

잠재적 인 사용 사례 (필드 이름 가정) :

INSERT INTO Vendors (EIN, ds.LegacyID, ...) VALUES (CASE ds.EIN WHEN '' THEN ' ' ELSE ds.EIN END, ds.LegacyID, ...) 
UPDATE Vendors SET EIN = CASE ds.EIN WHEN '' THEN ' ' ELSE ds.EIN END 
+0

CASE 문이 훌륭하게 작동했습니다. ! 고맙습니다. 내 INSERT 문의 VALUES 부분을 생략 한 것에 대해 사과했지만 INSERT INTO 쿼리에서 IF 또는 CASE 문을 사용하는 방법을 찾고있었습니다. 신속한 답장을 보내 주셔서 다시 한 번 감사드립니다. – DataCrypt

1

당신은 모든 값에 IIF을 사용할 수 있습니다 에스.

나는 어느 것이 varchar 값인지 확실하지 않으므로 추측을 취할 것입니다. 또한 나는 당신이 당신의 가치를 어떻게 얻고 있는지 전혀 모른다. 그래서 나는 지금 하드 코딩 된 것으로 가정 할 것이다.

INSERT INTO Vendors (LegacyID, ExternalID1, ExternalID2, EIN, LegalName, DBAName, ...) 
VALUES (LegacyID, ExternalID1, ExternalID2, EIN, IIF(LegalName = '', ' ', LegalName), IIF(DBAName = '', ' ', DBAName), ...) 

-- or 

Update Vendors SET LegacyID = ds.LegacyID 
    , ExternalID1 = ds.ExtID1 
    , ExternalID2 = ds.ExtID2 
    , LegalName = IIF(ds.LegalName = '', ' ', ds.LegalName) 
    , DBAName = IIF(ds.DBAName = '', ' ', ds.LegalName) 
    ... 

또한 당신이이 작업을 수행하는 타당한 이유/비즈니스 사례를 바랍니다. 빈 값을 원할 경우 가장 좋은 것은 빈 문자열이고 값이없는 경우 null을 사용하십시오. 공간을 유지하는 것은 이상한 요구 사항처럼 보일뿐입니다. 아마 프레젠테이션 계층에서만 필요하지만 아마도 퍼시스턴스 저장소에 저장하지 않아야합니다.

+0

감사합니다. 저는 IIF 성명서에 매우 익숙하지만 T-SQL에서 가능하다는 것을 알지 못했습니다. 나는 CASE 문을 사용하여 끝내었지만 또한 이것을 시도 할 것이다. 필드에 공간이 필요한 이유는이 테이블의 값을 읽는 응용 프로그램이 NULL 또는 EMPTY STRING을보고 충돌하는 것입니다. 그것은 우스꽝스럽고 나는 그것이 NULL이어야한다는 것에 완전히 동의합니다.우리는 최종적으로이를 수정하기를 희망하여 공급 업체에 연락했습니다. 또한 SQL 쿼리 문에서는 저장 프로 시저가 아닌 모든 작업을 수행해야했습니다. 답장을 보내 주셔서 다시 한 번 감사드립니다! – DataCrypt

+0

@DataCrypt - 작동하는 것을 찾은 것을 기쁘게 생각합니다. 대답을 유용하게 찾은 경우 위쪽 화살표와 유용하다고 판단한 답변 (답변 체크 표시와 같은 1 개에만 국한되지 않음)을 사용하여 업 보트 (upvote) 할 수도 있습니다. – Igor