Сравнение и корректировка строк BigQuery с заменой / обрезкой - PullRequest
0 голосов
/ 06 января 2019

Я пытался разместить в BigQuery для входов с неправильным интервалом.
Тем не менее, я продолжаю получать странные результаты, в основном говоря, что abc <> abc.

Может кто-нибудь объяснить, как это возможно? Я пытался отрегулировать это с помощью replace и rtrim, но ни один из них не служил цели.

Спасибо

SELECT o = t,o, t, length(o) as lon_o, length(t) as len_t
from
(select replace('abc                                                                ',' ','') o,
'abc' as t)

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Я смог легко воспроизвести ваш случай, имея (например) несколько tabs внутри этой строки вместо пробелов -

enter image description here

визуально они выглядят совершенно одинаково - но в первом ряду 64 пробела, а во втором - 5 вкладок и 44 пробела. В веб-интерфейсе каждая вкладка занимает 2 символьных места, поэтому всего 5 вкладок + 44 пробела выглядят как 64 пробела (точно так же, как в первой строке)

Чтобы решить эту проблему - вы можете использовать REGEXP_REPLACE вместо REPLACE
Использование REGEXP_REPLACE позволяет вам «удалить» все пробелы, как в примере ниже (единственное отличие здесь во второй строке - использование REGEXP_REPLACE вместо REPLACE и использование r'\s' вместо ' '

enter image description here

И, наконец, - если вернуться к первому примеру - хороший способ увидеть, что на самом деле делает эти 8 символов против 3 символов в lon_o результата, - это переключиться из Table view to JSON` view как ниже

enter image description here

0 голосов
/ 06 января 2019

это работает для меня enter image description here

Убедитесь, что в вашем тексте нет скрытых символов ASCII, которые могут быть причиной этого, например HEX 80

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...