SQL-删除第三次出现逗号后的字符



我有一个由作者名称组成的字段,所有名称都用逗号分隔,但我只想能够选择出现的前三个名称,而不管字段中总共出现了多少;我有下面的代码,但它对我不起作用:

select left(AUTHORS,charindex(',',AUTHORS,charindex(',',AUTHORS,charindex(',',AUTHORS)+1)+1)-1)

我得到错误

ORA-00904:"LEFT":无效标识符

如果有关于我哪里出错的想法,我们将不胜感激。

谢谢

在Oracle中,您可以使用regexp_replace():

select regexp_replace(authors, '^([^,]+,[^,]+,[^,]+).*$', '1')

这将给出您要求的结果:

select NVL(SUBSTR(AUTHORS, 1, INSTR(AUTHORS,',',1,3) -1), AUTHORS)
from mytable;

此外,如果您只有两个作者名称,这将返回列值。

这是一个小型演示

最新更新