如何删除文本的第一个和最后一个字符?

Jos*_*ran 0 sql string postgresql text

我有一个转换成如下文本的记录:

("{""ACC_CODE"":""0/000"",""ACC_DECIMAL"":2}"})
Run Code Online (Sandbox Code Playgroud)

我想删除它(,)以便我可以将文本转换为json.我怎么做?

编辑:我不想使用修剪功能,因为原始文本中有(&)字符.

我只想删除first&last字符.

Vao*_*sun 10

t=# select rtrim(ltrim('({()})','('),')');
 rtrim
-------
 {()}
(1 row)
Run Code Online (Sandbox Code Playgroud)

ltrim 和 rtim 不接触里面的括号,就像修剪它本身一样:

t=# select trim('({()})','()');
 btrim
-------
 {()}
(1 row)
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 8

你可以做:

select substr(col, 2, length(col) - 2)
Run Code Online (Sandbox Code Playgroud)

  • 如果col是一个表达式,就会有一些多余的计算。例如: substring(substring(test_column, 'abc\.abcd\.id%3D.+?\%3BS\.com') from 30)。有没有办法避免调用 length() ? (2认同)

小智 5

从字符串中删除第一个字符

select substr(col, 2)
Run Code Online (Sandbox Code Playgroud)

从字符串中删除最后一个字符

select substr(col,1, length(col)-1)
select reverse(substr(reverse(col),2)
Run Code Online (Sandbox Code Playgroud)