Postgres SELECT에서 열을 연결하는 방법은 무엇입니까?
나는 두 개의 문자열 열이 a
과 b
테이블에 foo
.
select a, b from foo
값 반환 a
및 b
. 그러나 연결 a
및 b
작동하지 않습니다. 나는 시도했다 :
select a || b from foo
과
select a||', '||b from foo
주석에서 업데이트 : 두 열 모두 유형 character(2)
입니다.
(나중에 언급했듯이) 문자열 유형 열을 사용 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
문제는 값에서 널 (null)입니다. 연결은 널과 함께 작동하지 않습니다. 해결책은 다음과 같습니다.
SELECT coalesce(a, '') || coalesce(b, '') FROM foo;
연결을 위해 PostgreSQL에서 CONCAT 함수를 사용하는 것이 좋습니다
예 : select CONCAT(first_name,last_name) from person where pid = 136
column_a를 사용하는 경우 || ''|| column_a 또는 column_b의 값 중 하나가 null이면 query는 null 값을 반환합니다. 모든 경우에 바람직하지 않을 수도 있습니다.
||
사용하다
CONCAT
둘 중 하나라도 가치가 있으면 관련 가치를 돌려줍니다
CONCAT 함수는 때때로 이전 postgreSQL 버전에서 작동하지 않습니다
CONCAT를 사용하지 않고 문제를 해결하는 데 사용한 것을 확인하십시오.
u.first_name || ' ' || u.last_name as user,
또는 당신은 사용할 수 있습니다
"first_name" || ' ' || "last_name" as user,
두 번째 경우에는 first_name 및 last_name에 큰 따옴표를 사용했습니다.
도움이 되길 바랍니다. 감사합니다.
이 시도
select textcat(textcat(FirstName,' '),LastName) AS Name from person;
PHP의 라 라벨 프레임 워크, 검색 first_name을 사용하고 있으며 last_name 필드는 전체 이름 검색과 같습니다.
|| 사용 기호 또는 concat_ws (), concat () 메소드
$names = str_replace(" ", "", $searchKey);
$customers = Customer::where('organization_id',$this->user->organization_id)
->where(function ($q) use ($searchKey, $names) {
$q->orWhere('phone_number', 'ilike', "%{$searchKey}%");
$q->orWhere('email', 'ilike', "%{$searchKey}%");
$q->orWhereRaw('(first_name || last_name) LIKE ? ', '%' . $names. '%');
})->orderBy('created_at','desc')->paginate(20);
이것은 매력적이었다 !!!
예를 들어 다음과 같이 열로 구성된 직원 테이블이있는 경우 :
employee_number,f_name,l_name,email_id,phone_number
우리는 연결하는 원하는 경우 f_name + l_name
로 name
.
SELECT employee_number,f_name ::TEXT ||','|| l_name::TEXT AS "NAME",email_id,phone_number,designation FROM EMPLOYEE;
참고 URL : https://stackoverflow.com/questions/19942824/how-to-concatenate-columns-in-a-postgres-select
'IT' 카테고리의 다른 글
배치 파일에서 파일을 삭제할 때“Y / N 확실합니까?”를 건너 뛰는 방법 (0) | 2020.07.01 |
---|---|
"wd에서 실행할 수 없음"으로 인해 Npm 설치가 실패했습니다. (0) | 2020.07.01 |
log4j.properties 파일을 어디에 두어야합니까? (0) | 2020.07.01 |
닫을 때 대화 상자를 완전히 제거하는 방법 (0) | 2020.07.01 |
열 조합에 고유 제한 조건을 추가하기위한 마이그레이션 (0) | 2020.07.01 |