仅选择列中的最后一个字符串

时间:2017-09-08 23:26:08

标签: sql oracle oracle12c

所以我试图只选择列中的最后一个字符串

这是我试图做的一个例子

我有一个产品表,产品图片位于文件夹\ folder \文件夹中,其中一些文件夹比其他文件夹更多,我想只查看图像文件,如

SELECT REGEXP_REPLACE(FILE_PATH, '[\|\]', ' ') FROM PRODUCT;

我得到这个只是分解文件路径文件夹cars.img

等文件路径

但现在我想只是抓取字符串cars.img使用substr并没有真正帮助,因为一些文件路径比其他文件路径长,并且img文件的名称比其他文件更长

3 个答案:

答案 0 :(得分:1)

您绝对可以仅使用SUBSTRINSTR执行此操作,并且它比任何基于REGEXP的解决方案更快(可能更快)。

键是“从字符串的末尾开始计数”,这是通过位置参数的值完成的。

select substr(file_path, instr(file_path, '\', -1) + 1) from product;

instr(file_path, '\', -1)会在字符串的末尾中找到“第一个”反斜杠的位置。然后substr将从下一个位置读取(这就是为什么你有+1)并且它将读到字符串的末尾(默认情况下省略第三个参数{{ 1}})。

<强>演示

substr()

答案 1 :(得分:0)

您好您可以使用以下组合:

LEFT(FieldName, 10) = SUBSTR(FieldName, 1, 10)
RIGHT(FieldName, 3) = SUBSTR(FieldName, -3)

INSTR( string, substring [, start_position [, th_appearance ] ] )

希望有所帮助。

泰德。

答案 2 :(得分:0)

您可以使用regexp_substr()

select regexp_substr(filepath, '[^\]+$', 1, 1)