Я запускаю некоторый SQL на Postgres Server 9.5
поле, полученное иногда, имеет начальные пробелы, в том числе буквенные пробелы, и пробелы табуляции '\ t'
во многих языках программирования.легко сделать с помощью замены регулярного выражения, например, в JavaScript:
> ' \tafsdfwef\t \n'.replace(/\s+/g, '')
'afsdfwef'
, тогда я обнаружил, что PostgreSQL также имеет эту функцию regexp_replace
и поддерживает \s
, что означает [[:space:]]
https://www.postgresql.org/docs/10/functions-matching.html#FUNCTIONS-POSIX-REGEXP
но этот \s
кажется только распознающим буквально пробелы ' '
?вопрос в том, поддерживает ли это регулярное выражение PostgreSQL \s
для включения всех видов пробелов (табуляции, новых строк)?
db=> SELECT regexp_replace('\tafsdfwef', '\s+', '');
regexp_replace
----------------
\tafsdfwef
(1 row)
db=> SELECT regexp_matches('\tafsdfwef', '\s+');
regexp_matches
----------------
(0 rows)
тогда я проверял, может ли функция trim
распознавать другие пробелы?Кажется, также нет?
db=> SELECT trim('\tafsdfwef\t');
btrim
--------------
\tafsdfwef\t
(1 row)
db=> SELECT trim(' \tafsdfwef\t');
btrim
--------------
\tafsdfwef\t
(1 row)
db=> SELECT trim(' \tafsdfwef\t \n ');
btrim
------------------
\tafsdfwef\t \n
(1 row)
Итак, есть ли у PostgreSQL простая функция, позволяющая убирать все виды пробелов, в начале, в середине и в конце строки?
EDIT:Моя жалоба также касается документации PostgreSQL, они упоминают от \t
до [:space:]
, но на самом деле это не все виды пробелов, как знают большинство программистов, они упоминают регулярное выражение POSIX, но на самом деле не POSIX,
кто-нибудь знает лучшее место, чтобы подать им ошибку?
https://www.postgresql.org/docs/10/functions-matching.html#FUNCTIONS-POSIX-REGEXP
РЕДАКТИРОВАТЬ: вот документация JavaScript Mozilla, что означает \s
a single white space character, including space, tab, form feed, line feed and other Unicode spaces. Equivalent to [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp