[SQL] 하나 개의 결과 집합의 열에 CONCATENATE 두 개의 데이터베이스 열
SQL하나 개의 결과 집합의 열에 CONCATENATE 두 개의 데이터베이스 열
나는 결과 집합의 한 컬럼에 하나 개의 테이블에서 여러 개의 데이터베이스 열을 연결하는 다음 SQL을 사용 :
SELECT (필드 1 + ''+ FIELD2 + ''+ FIELD3) 표 FROM
필드 중 하나가 null 인 경우 I는 전체 연결 식에 대한 널 (null) 결과를 얻었다. 나는이 문제를 어떻게 극복 할 수 있는가?
데이터베이스는 그런데 MS SQL 서버 2008이며,이 CONCATENATE 데이터베이스 컬럼에 가장 좋은 방법은? 이 일을 표준 SQL이 있습니까?
해결법
-
==============================
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.당신은 SQL 2012 또는 이상을 사용한 경우에는 CONCAT 기능을 사용할 수 있습니다 :
당신은 SQL 2012 또는 이상을 사용한 경우에는 CONCAT 기능을 사용할 수 있습니다 :
SELECT CONCAT(field1, field2, field3) FROM table1
NULL 필드는 연결을 중단하지 않습니다.
@bummi - 주석 주셔서 감사합니다 - 그것에 해당하는 내 대답을 편집했다.
-
==============================
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.당신이 NULL 값에 문제가있는 경우, 당신의 선택의 값으로 NULL을 대체 할 COALESCE 함수를 사용합니다. 귀하의 질의는 다음과 같을 것이다 :
당신이 NULL 값에 문제가있는 경우, 당신의 선택의 값으로 NULL을 대체 할 COALESCE 함수를 사용합니다. 귀하의 질의는 다음과 같을 것이다 :
SELECT (COALESCE(field1, '') + '' + COALESCE(field2, '') + '' + COALESCE(field3,'')) FROM table1
http://www.codeproject.com/KB/database/DataCrunching.aspx
-
==============================
5.그것을 극복하기 위해 ISNULL을 사용합니다.
그것을 극복하기 위해 ISNULL을 사용합니다.
예:
SELECT (ISNULL(field1, '') + '' + ISNULL(field2, '')+ '' + ISNULL(field3, '')) FROM table1
이는 전체 NULL 결과로 평가로부터는 연결은 동작을 유지합니다 빈 문자열을 사용하여 NULL 컨텐츠를 대체합니다.
-
==============================
6.모두 열이 숫자 인 경우 그 다음이 코드를 사용하여
모두 열이 숫자 인 경우 그 다음이 코드를 사용하여
예:
Select (Cast(Col1 as Varchar(20)) + '-' + Cast(Col2 as Varchar(20))) As Col3 from Table
-
==============================
7.그냥에서 VARCHAR 열 캐스트 (크기)
그냥에서 VARCHAR 열 캐스트 (크기)
모두 열 아래 숫자 다음 코드를 사용하는 경우.
예:
Select (Cast(Col1 as Varchar(20)) + '-' + Cast(Col2 as Varchar(20))) As Col3 from Table
무엇이이 40이 될 것이다 COL3의 크기 또는 뭔가 다른 것
from https://stackoverflow.com/questions/6427764/concatenate-two-database-columns-into-one-resultset-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 문자열 비교보다 적은 사업자보다 큰 (0) | 2020.04.26 |
---|---|
[SQL] 어떤 "특별한"문자는 SQL 서버 VARCHAR 필드에 사용할 수 있습니다? [닫은] (0) | 2020.04.26 |
[SQL] SQL Server의 조건에 따라 카운트 (0) | 2020.04.25 |
[SQL] SQL 쿼리의 새로운 라인 (0) | 2020.04.25 |
[SQL] 보기의 선택은 FROM 절에 하위 쿼리를 포함 (0) | 2020.04.25 |