2017-04-14 1 views
1

CONCAT()은 값이 NULL이면 NULL을 반환합니다. IFNULL()을 사용하여 모든 필드를 CONCAT()에 전달해야합니다. 이 NULL을 무시한다는 CONCAT() 변형이 있습니까?NULL 값을 허용하는 모든 CONCAT() 변형?

#standardSQL 
WITH data AS (
    SELECT 'a' a, 'b' b, CAST(null AS STRING) nu 
) 

SELECT CONCAT(a, b, nu) concatenated, ARRAY_TO_STRING([a,b,nu], ',') w_array_to_string 
FROM `data` 

---> 
null 

답변

2

빠른 Jam Session 흥미로운 주제에 해당

잠재적으로있다 무제한 실제 사용 사례 조합 다음은 몇 가지 변형입니다.

#standardSQL 
WITH data AS (
    SELECT 'a' a, 'b' b, 'c' c UNION ALL 
    SELECT 'y', 'x', NULL UNION ALL 
    SELECT 'v', NULL, 'w' 
) 
SELECT 
    *, 
    CONCAT(a, b, c) by_concat, 
    ARRAY_TO_STRING([a,b,c], '') by_array_to_string, 
    ARRAY_TO_STRING([a,b,c], '', '?') with_null_placeholder, 
    ARRAY_TO_STRING(
    (SELECT ARRAY_AGG(col ORDER BY col DESC) 
     FROM UNNEST([a,b,c]) AS col 
     WHERE NOT col IS NULL) 
    , '') with_order 
FROM `data` 

출력은 :

a b  c  by_concat by_array_to_string with_null_placeholder with_order 
- ---- ---- --------- ------------------ --------------------- ---------- 
y x  null null  yx     yx?      yx 
a b  c  abc   abc     abc      cba 
v null w  null  vw     v?w      wv 
1

사용 ARRAY_TO_STRING ([COL1, COL2, ...]) 대신 : 예를 들어

#standardSQL 
WITH data AS (
    SELECT 'a' a, 'b' b, CAST(null AS STRING) nu 
) 

SELECT ARRAY_TO_STRING([a,b,nu], '') w_array_to_string 
FROM `data` 

---> 
ab 
+0

는 ARRAY_TO_STRING '를 선택되어야한다 ([A, B, 플레이,') ' –

+0

오른쪽! 감사!! –

관련 문제