RPAD с непостоянным параметром - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы "сравнить" строки типа ???? и ?? вместе в 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 (если я не могу проверить, еслиостаток текста1 является повторяющейся последовательностью 1-го символа в тексте2).

Какие есть решения?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

ниже относится к стандарту 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

0 голосов
/ 15 февраля 2019

Как насчет использования like?

where text2 like concat(text1, '%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...