2016-04-25 2 views
0

У меня есть некоторые значения в столбце varchar, которые разделены непрозрачными пробелами (urlencoded %A0 вместо %20). Я пытаюсь заменить их пробелами, но не могу получить правильный синтаксис:Замена неиспользуемых пробелов (% A0) в Postgres

select regexp_replace('hello world', E'\xa0', ' ') 

Что такое правильный способ кодирования символов в regexp_replace функции Postgres? Или, есть ли лучший способ сделать замену?

+0

You не нужно 'regexp_replace()'. 'replace()' достаточно –

+0

'0xA0' - это незаменимое пространство в ISO-8859-1 (AKA Latin-1), вы уверены, что это правильная кодировка для вашей базы данных? –

+0

@a_horse_with_no_name Не могли бы вы поделиться синтаксисом, который будет работать с кодом символа и заменить? Это та часть, с которой у меня проблемы. –

ответ

0

Замена '\xa0' не работает для меня, возможно, потому, что мои строки были в UTF-8, а не Latin1 или другой, где символ кодируется непосредственно как A0. (U+A0 кодируются с байтами C2 A0 в UTF-8)

Я нашел его более практичный, чтобы заменить его в качестве точки коды (U+A0), а не как закодированные байты (C2 A0 или A0):

select replace('456321 ', E'\u00a0', '') -- value is E'456321\u00a0' 
+0

Интересный момент Джонатан. спасибо – pnorton

Смежные вопросы