Postgres регулярное выражение для поиска символов \ u0001 to \ u0031 - PullRequest
2 голосов
/ 19 июля 2011

Как найти все символы пробела, такие как \ u0004 или \ u0001, в значениях столбцов postgres?Это может быть в начале, в середине или в конце.Я не хочу получать значения пробелов (\ u0032) слишком, только пробельные символы от \ u0001 до \ u0031.

Что-то вроде ниже, но это не правильно, он тоже выбирает пробелы ???

select column where column ~* '[\u0001-\u0031]'

Спасибо

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Если вам нужно сопоставить любой символ пробела, кроме обычного пробела, вы можете использовать это регулярное выражение:

[^\S ]
1 голос
/ 19 июля 2011

Вы, вероятно, путаете формат \uwxyz с десятичным основанием.Для уверенности проверьте таблицу Unicode C0 Controls и Basic Latin * .Я предполагаю, что вы хотите, чтобы диапазон управления C0 варьировался от U + 0001 до U + 001F, поэтому вы можете написать:

SELECT  E'\u0033 dfgdgdg' ~ E'[\\u0001-\\u001F]' AS isMatch;

или использовать восьмеричное основание \xyz:

SELECT  E'\u0033 dfgdgdg' ~ E'[\\001-\\037]' AS isMatch;

Еще один удобныйможно написать шаблон с указанием доллара (поэтому вам не нужно дополнительно избегать обратной косой черты):

$$[\u0001-\u001F]$$
$$[\x001-\x01f]$$
$$[\001-\037]$$
0 голосов
/ 19 июля 2011

Один символ пробела - 0x20, а не 0x31.Диапазон символов Юникода ниже пробела будет от \u0001 до \u0019

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