Postgresql PASGRESString函数(包括ReGeExp**)将Tab视为空格吗?

Postgresql PASGRESString函数(包括ReGeExp**)将Tab视为空格吗?,postgresql,Postgresql,我正在Postgres服务器9.5上运行一些SQL Get字段有时有前导空格,包括文字空白和制表符空格“\t” 在许多编程语言中,使用regexp替换很容易,如JavaScript中所示: > ' \tafsdfwef\t \n'.replace(/\s+/g, '') 'afsdfwef' 然后我发现PostgreSQL也有这个regexp\u replace函数,它还支持\s意思是[:space:] 但是这个\s似乎只识别字面上的空白'?问题是这个PostgreSQL正则表达

我正在Postgres服务器9.5上运行一些SQL

Get字段有时有前导空格,包括文字空白和制表符空格“\t”

在许多编程语言中,使用regexp替换很容易,如JavaScript中所示:

> '   \tafsdfwef\t  \n'.replace(/\s+/g, '')
'afsdfwef'
然后我发现PostgreSQL也有这个
regexp\u replace
函数,它还支持
\s
意思是
[:space:]

但是这个
\s
似乎只识别字面上的空白
'
?问题是这个PostgreSQL正则表达式是否支持
\s
包含所有类型的空格(制表符、换行符)

然后我测试了
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是否有一个简单的函数,可以在字符串的前导、中间和尾部去掉所有类型的空格

编辑:我的抱怨也是针对PostgreSQL文档,他们提到了
\t
[:space:][/code>,但并不是所有类型的空格,正如大多数程序员所知,它提到了POSIX正则表达式,但不是真正的POSIX

有人知道一个更好的地方给他们归档bug吗

编辑:这是Mozilla JavaScript文档,
\s
的意思
单个空白字符,包括空格、制表符、换行符、换行符和其他Unicode空格。相当于[\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]。


是的,PASGRES-ReExp函数将Tab视为空间。实际上,文本

'\tafsdfwef'
不包含制表符。您必须在开始单引号之前写上字母E(大写或小写),以获取其中的制表符(和/或其他转义符):


在文档中阅读。

是的,PASGRES-ReExp函数将Tab视为空间。实际上,文本

'\tafsdfwef'
不包含制表符。您必须在开始单引号之前写上字母E(大写或小写),以获取其中的制表符(和/或其他转义符):


阅读文档。

'\tafsdfwef\t\n'
是一个字符串,四个空格后接反斜杠字符
\
,字符
t
后接字符
。\tafsdfwef\t\n'
是一个字符串,四个空格后接反斜杠字符
后接字符
t
后接字符
a
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)
SELECT regexp_replace(E'\ta\nb\fc\rd', '\s', '', 'g')

 regexp_replace 
----------------
 abcd
(1 row)