【发布时间】:2020-10-28 19:23:32
【问题描述】:
如何在 PostgreSQL trim() 函数中转义下划线'_'?
我尝试使用 trim() 函数从文本开头删除 'vt_'(例如 'vt_test' ):
select trim(leading 'vt_' from 'vt_test');
select ltrim('vt_test', 'vt_');
select ltrim('vt_test', 'vt\_');
select ltrim('vt_test', 'vt\\_');
返回:
est
但我想得到:
test
我可以使用 replace() 做到这一点,但我想知道为什么 trim() 不起作用。
在 Postgres 12 和 11 上测试。
摘要
- 函数
trim删除列出字符的所有前导实例 - 字符的顺序无关紧要。你得到相同的结果使用trim(leading '_tv' from 'vt_test')。 - 我认为,最好的解决方案是使用
select regexp_replace('vt_test', '^vt_', ''),因为我只想在开头存在vt_的情况下删除这个前导字符串(对不起,但我之前没有提到它)。
感谢 a_horse_with_no_name、Mureinik 和 Erwin Brandstetter 的帮助!
【问题讨论】:
-
字符的顺序无关紧要。使用
trim(leading '_tv' from 'vt_test')得到相同的结果
标签: sql postgresql replace trim