Postgresql PASGRESString函数(包括ReGeExp**)将Tab视为空格吗?
我正在Postgres服务器9.5上运行一些SQL Get字段有时有前导空格,包括文字空白和制表符空格“\t” 在许多编程语言中,使用regexp替换很容易,如JavaScript中所示: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正则表达
> ' \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)