具有非常数参数的RPAD

时间:2019-02-15 17:53:28

标签: sql google-bigquery

我想在bigquery中将之类的字符串“比较”在一起,所以我正在做

SELECT
...
WHERE
text1 != RPAD(text2, LENGTH(text1), SUBSTR(text2, 1, 1))

不幸的是我得到了错误 Third argument must be const, non-null and of type string

我真的想检查 text1 = text2 +一些重复的字符,而不仅仅是子字符串

我不想修剪text1以将其与text2进行比较(除非我可以检查text1的其余部分是否为text2中第一个字符的重复序列)。

有什么解决方案?

2 个答案:

答案 0 :(得分:2)

以下是BigQuery标准SQL

WHERE text1 != CONCAT(text2, REPEAT(SUBSTR(text1, LENGTH(text2), 1), LENGTH(text1) - LENGTH(text2)))

您可以使用下面的虚拟示例进行测试

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '' text1, '' text2 UNION ALL
  SELECT '1', ''
)
SELECT * 
FROM `project.dataset.table`
WHERE text1 != CONCAT(text2, REPEAT(SUBSTR(text1, LENGTH(text2), 1), LENGTH(text1) - LENGTH(text2)))

结果是

Row text1       text2    
1   1          

您可以看到第一行由于repeated character而被滤除

答案 1 :(得分:0)

如何使用like

where text2 like concat(text1, '%')