select ltrim('Test Thing', 'Test ');预期:“事情”
实际结果:“兴”
为什么“测试”中的“T”与“事物”中的“T”匹配?
发布于 2019-04-26 21:34:23
第二个参数是要修剪的字符列表,而不是字符串本身。
手册关于ltrim(string text [, characters text]):
从字符串的开头删除只包含字符的最长字符串(默认情况下为空格)。
所以这个:
select ltrim('abc cab b ca foo', 'abc ');..。只剩下“傻瓜”了。
要实际删除一个前导字符串“Test”:
SELECT regexp_replace('Test ThingTest ', '^Test ', '');但是要更新表,通常情况下效率要高得多:
UPDATE tbl
SET col = right(col, -5) -- right(col, length('Test ') * -1)
WHERE col LIKE 'Test %';只有涉及相关行(重要!),才能在适当的地方使用索引(重要的是,如果一个大表中只有几行受到影响),而且表达式也更便宜。关于这个指数:
https://dba.stackexchange.com/questions/236821
复制相似问题