복붙노트

[SQL] 하나 개의 결과 집합의 열에 CONCATENATE 두 개의 데이터베이스 열

SQL

하나 개의 결과 집합의 열에 CONCATENATE 두 개의 데이터베이스 열

나는 결과 집합의 한 컬럼에 하나 개의 테이블에서 여러 개의 데이터베이스 열을 연결하는 다음 SQL을 사용 :

SELECT (필드 1 + ''+ FIELD2 + ''+ FIELD3) 표 FROM

필드 중 하나가 null 인 경우 I는 전체 연결 식에 대한 널 (null) 결과를 얻었다. 나는이 문제를 어떻게 극복 할 수 있는가?

데이터베이스는 그런데 MS SQL 서버 2008이며,이 CONCATENATE 데이터베이스 컬럼에 가장 좋은 방법은? 이 일을 표준 SQL이 있습니까?

해결법

  1. ==============================

    1.것이이 일의 SQL 표준 방법 :

    것이이 일의 SQL 표준 방법 :

    SELECT COALESCE(field1, '') || COALESCE(field2, '') || COALESCE(field3, '') FROM table1
    

    예:

    INSERT INTO table1 VALUES ('hello', null, 'world');
    SELECT COALESCE(field1, '') || COALESCE(field2, '') || COALESCE(field3, '') FROM table1;
    
    helloworld
    
  2. ==============================

    2.당신은 SQL 2012 또는 이상을 사용한 경우에는 CONCAT 기능을 사용할 수 있습니다 :

    당신은 SQL 2012 또는 이상을 사용한 경우에는 CONCAT 기능을 사용할 수 있습니다 :

    SELECT CONCAT(field1, field2, field3) FROM table1
    

    NULL 필드는 연결을 중단하지 않습니다.

    @bummi - 주석 주셔서 감사합니다 - 그것에 해당하는 내 대답을 편집했다.

  3. ==============================

    3.NULL 정상 동작은 NULL을 포함한 모든 작업이 NULL을 얻을 수 있다는 것입니다 ...

    NULL 정상 동작은 NULL을 포함한 모든 작업이 NULL을 얻을 수 있다는 것입니다 ...

    - 9 * NULL  = NULL  
    - NULL + '' = NULL  
    - etc  
    

    다른 뭔가 NULL의 인스턴스를 대체하기 위해 사용 ISNULL 또는 유착을 극복하려면 ...

    SELECT (ISNULL(field1,'') + '' + ISNULL(field2,'') + '' + ISNULL(field3,'')) FROM table1
    
  4. ==============================

    4.당신이 NULL 값에 문제가있는 경우, 당신의 선택의 값으로 NULL을 대체 할 COALESCE 함수를 사용합니다. 귀하의 질의는 다음과 같을 것이다 :

    당신이 NULL 값에 문제가있는 경우, 당신의 선택의 값으로 NULL을 대체 할 COALESCE 함수를 사용합니다. 귀하의 질의는 다음과 같을 것이다 :

    SELECT (COALESCE(field1, '') + '' + COALESCE(field2, '') + '' + COALESCE(field3,'')) FROM table1
    

    http://www.codeproject.com/KB/database/DataCrunching.aspx

  5. ==============================

    5.그것을 극복하기 위해 ISNULL을 사용합니다.

    그것을 극복하기 위해 ISNULL을 사용합니다.

    예:

    SELECT (ISNULL(field1, '') + '' + ISNULL(field2, '')+ '' + ISNULL(field3, '')) FROM table1
    

    이는 전체 NULL 결과로 평가로부터는 연결은 동작을 유지합니다 빈 문자열을 사용하여 NULL 컨텐츠를 대체합니다.

  6. ==============================

    6.모두 열이 숫자 인 경우 그 다음이 코드를 사용하여

    모두 열이 숫자 인 경우 그 다음이 코드를 사용하여

    예:

    Select (Cast(Col1 as Varchar(20)) + '-' + Cast(Col2 as Varchar(20))) As Col3 from Table
    
  7. ==============================

    7.그냥에서 VARCHAR 열 캐스트 (크기)

    그냥에서 VARCHAR 열 캐스트 (크기)

    모두 열 아래 숫자 다음 코드를 사용하는 경우.

    예:

    Select (Cast(Col1 as Varchar(20)) + '-' + Cast(Col2 as Varchar(20))) As Col3 from Table
    

    무엇이이 40이 될 것이다 COL3의 크기 또는 뭔가 다른 것

  8. from https://stackoverflow.com/questions/6427764/concatenate-two-database-columns-into-one-resultset-column by cc-by-sa and MIT license