所以我试图只选择列中的最后一个字符串
这是我试图做的一个例子
我有一个产品表,产品图片位于文件夹\ folder \文件夹中,其中一些文件夹比其他文件夹更多,我想只查看图像文件,如
SELECT REGEXP_REPLACE(FILE_PATH, '[\|\]', ' ') FROM PRODUCT;
我得到这个只是分解文件路径文件夹cars.img
等文件路径但现在我想只是抓取字符串cars.img使用substr并没有真正帮助,因为一些文件路径比其他文件路径长,并且img文件的名称比其他文件更长
答案 0 :(得分:1)
您绝对可以仅使用SUBSTR
和INSTR
执行此操作,并且它比任何基于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)