在postgresql trim()函数中转义下划线“\”?

wsewodh2  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(744)

如何在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的帮助!

kuarbcqp

kuarbcqp1#

trim() 按预期工作:它删除列出的字符的所有前导示例。手册:
修剪(字符串中的[前导|尾随|两个][字符])
从中删除仅包含字符的最长字符串 characters (默认为空格)从开始、结束或两端开始( both 是的默认值) string 所以呢 vt_t 被移除,而不仅仅是 vt_ .
这个问题与下划线无关 _ ,在本文中没有特殊意义。
特定任务的最快替代方案:

SELECT right('vt_test', -3);
l7wslrjt

l7wslrjt2#

这里的问题无法逃避, ltrim 只是不适合做这项工作。根据文档,此功能将
从字符串开头的字符(默认为空格)中删除仅包含字符的最长字符串。
你可以用 regexp_replace 要达到预期效果:

select regexp_replace('vt_test', '^vt_', '')

相关问题