如何在postgresql中转义下划线“\” trim()
功能?
我试着移除 'vt_'
从文本开始(例如 'vt_test'
)使用 trim()
功能:
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()
不起作用。
在12年级和11年级进行测试。
总结
功能 trim
删除列出的字符的所有前导示例-字符的顺序无关紧要。你可以使用 trim(leading '_tv' from 'vt_test')
.
我认为,最好的解决办法是 select regexp_replace('vt_test', '^vt_', '')
因为我只想在 vt_
一开始就存在(对不起,我以前没提过)。
感谢一匹没有名字的马,mureinik和erwin brandstetter的帮助!
2条答案
按热度按时间kuarbcqp1#
trim()
按预期工作:它删除列出的字符的所有前导示例。手册:修剪(字符串中的[前导|尾随|两个][字符])
从中删除仅包含字符的最长字符串
characters
(默认为空格)从开始、结束或两端开始(both
是的默认值)string
所以呢vt_t
被移除,而不仅仅是vt_
.这个问题与下划线无关
_
,在本文中没有特殊意义。特定任务的最快替代方案:
l7wslrjt2#
这里的问题无法逃避,
ltrim
只是不适合做这项工作。根据文档,此功能将从字符串开头的字符(默认为空格)中删除仅包含字符的最长字符串。
你可以用
regexp_replace
要达到预期效果: