(나중에 언급했듯이) 문자열 유형 열을 사용 character(2)
하면 표시된 연결 이 매뉴얼을 인용 하기 때문에 작동합니다 .
[...] 문자열 연결 연산자 ( ||
)는 표 9.8에 표시된 것처럼
하나 이상의 입력이 문자열 유형 인 경우 문자열이 아닌 입력을 허용 합니다. 다른 경우에는 [...]text
대담한 강조 광산. 두 번째 예제 ( select a||', '||b from foo
)는 형식이 지정되지 않은 문자열 리터럴이 기본적으로 모든 경우에 전체 식을 유효하게 만드는 형식이므로 모든 데이터 형식에 적용됩니다.', '
text
문자열이 아닌 데이터 형식의 경우 하나 이상의 인수를 로 캐스팅 하여 첫 번째 문을 "수정"할 수 있습니다 text
. ( 모든 유형은로 캐스팅 가능 text
) :
SELECT a::text || b AS ab FROM foo;
자신의 답변으로 판단 하면 " 작동하지 않습니다 "는 " NULL을 반환합니다 " 를 의미하는 것으로 간주되었습니다 . NULL에 연결된 모든 결과 는 NULL입니다. 경우 NULL의 값이 참여 할 수 있으며, 결과는 NULL을지지 않습니다, 사용 concat_ws()
가치 (나중에 포스트 그레스 9.1)의 수를 연결하는 :
SELECT concat_ws(', ', a, b) AS ab FROM foo;
또는 concat()
구분 기호가 필요하지 않은 경우 :
SELECT concat(a, b) AS ab FROM foo;
두 함수 모두 "any"
입력을 받고 텍스트 표현으로 작업하기 때문에 타입 캐스트가 필요하지 않습니다 .
COALESCE
이 관련 답변에 대한 자세한 내용 (그리고 왜 대체가 좋지 않은지 ) :
+
Postgres (또는 표준 SQL)에서 문자열 연결에 유효한 연산자가 아닙니다. 이를 제품에 추가하는 것은 Microsoft의 사적인 아이디어입니다.
사용해야 할 이유가 거의 없습니다 character(n)
(동의어 :) char(n)
. text
또는을varchar
사용하십시오 . 세부:
text
유형입니까?