我有一个要根据要求修改的字符串。
例如:
给定的字符串是:
str1 varchar = '123,456,789';
我想将字符串显示为:
'456,789'
注意:用逗号分隔第一部分(分隔),我想从字符串中删除并显示字符串的其余部分。
在SQL Server中,我使用了STUFF()
函数。
SELECT STUFF('123,456,789',1,4,'');
结果:
456,789
问题:PostgreSQL 9.3版本中是否有任何字符串函数可以完成同样的工作?
答案 0 :(得分:2)
你可以使用正则表达式:
select substring('123,456,789' from ',(.*)$');
逗号匹配字符串中找到的第一个逗号。括号内的部分(。*)从函数返回。符号$表示字符串的结尾。
没有正则表达式的替代解决方案:
select str, substring(str from position(',' in str)+1 for length(str)) from
(select '123,456,789'::text as str) as foo;
答案 1 :(得分:1)
您可以先将字符串转换为数组并返回第二个和第三个单元格:
select array_to_string((regexp_split_to_array('123,456,789', ','))[2:3], ',')
或者您可以将substring-function与正则表达式(模式匹配)一起使用:
SELECT substring('123,456,789' from '[0-9]+,([0-9]+,[0-9]+)')
两种解决方案都适用于您的特定字符串。
答案 2 :(得分:1)
您的SQL Server示例表明您只想删除前4个字符,这使得您的问题的其余部分似乎具有误导性,因为它完全忽略了字符串中的内容。只有这些职位很重要。
尽管如此,切断主角的简单而廉价的方法是使用right()
:
SELECT right('123,456,789', -4);