以下 BigQuery 标准 SQL 示例
#standardSQL
CREATE TEMP FUNCTION InList(list STRING, num INT64) AS ((
SELECT COUNTIF(num = CAST(number AS INT64)) FROM UNNEST(SPLIT(list)) number
));
WITH `project.dataset.table` AS (
SELECT '1,2,3' AS number_list UNION ALL
SELECT '2,3,4'
)
SELECT number_list, InList(number_list, 1) in_list
FROM `project.dataset.table`
结果
Row number_list in_list
1 1,2,3 1
2 2,3,4 0
我也想避免说
SELECT IF('1,2,3' LIKE '%,1,%' OR '1,2,3' LIKE '1,%' OR '1,2,3' LIKE '%,1',1,0)
为了避免这种冗余,您可以使用以下版本
SELECT IF(CONCAT(',', number_list, ',') LIKE CONCAT('%,1,%'), 1, 0)
...而且,最后 - 最有可能是赢家 :o)
我想能够说select if(1 in split('1,2,3'),1,0)
最接近的是
SELECT IF('1' IN UNNEST(SPLIT(number_list)), 1, 0)