Sql 我有一个带有列图像路径的表,我需要从字符串中生存
图像路径及其列名 我想从IMAGE_PATH列获取子字符串,如下所示 表示我需要介于最后一个“/”之后和之前的子字符串 请为我提供解决方案,它将如何修复 尝试以下简单方法使用SUBSTR和INSTR: 编辑:如果您不想使用获取文件扩展名。使用: 输出: 尝试以下简单方法使用SUBSTR和INSTR: 编辑:如果您不想使用获取文件扩展名。使用: 输出:Sql 我有一个带有列图像路径的表,我需要从字符串中生存,sql,oracle,plsqldeveloper,Sql,Oracle,Plsqldeveloper,图像路径及其列名 我想从IMAGE_PATH列获取子字符串,如下所示 表示我需要介于最后一个“/”之后和之前的子字符串 请为我提供解决方案,它将如何修复 尝试以下简单方法使用SUBSTR和INSTR: 编辑:如果您不想使用获取文件扩展名。使用: 输出: 尝试以下简单方法使用SUBSTR和INSTR: 编辑:如果您不想使用获取文件扩展名。使用: 输出: 您可以尝试以下方法: WITH d1 AS ( SELECT 'sph/images///////30_Fairhall_Court.jp
您可以尝试以下方法:
WITH d1 AS (
SELECT 'sph/images///////30_Fairhall_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images///8_Furnival_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images/9_Pennethorne_House.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'rbkc/images/TAVISTOCK_CRESCENT.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'haringey///images/399932thumb.jpg' AS image_path FROM dual
UNION ALL
SELECT 'urbanchoice/images//18190862.jpg' AS image_path FROM dual
UNION ALL
SELECT 'westminster/images//7_Glarus_Court.jpeg' AS image_path FROM dual
)
SELECT TRIM(TRAILING '.' FROM REGEXP_SUBSTR(image_path, '[^/]+\.'))
FROM d1;
以上假设不存在。最后一个/前面的字符。更好的解决方案可能是:
WITH d1 AS (
SELECT 'sph/images///////30_Fairhall_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images///8_Furnival_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images/9_Pennethorne_House.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'rbkc/images/TAVISTOCK_CRESCENT.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'haringey///images/399932thumb.jpg' AS image_path FROM dual
UNION ALL
SELECT 'urbanchoice/images//18190862.jpg' AS image_path FROM dual
UNION ALL
SELECT 'westminster/images//7_Glarus_Court.jpeg' AS image_path FROM dual
)
SELECT REGEXP_SUBSTR(image_path, '[^.]+', INSTR(image_path, '/', -1) + 1)
FROM d1;
也就是说,查找所有非-。请注意,逃逸。在字符类中,final/之后的字符不需要
输出:
30_Fairhall_Court
8_Furnival_Court
9_Pennethorne_House
TAVISTOCK_CRESCENT
399932thumb
18190862
7_Glarus_Court
您可以尝试以下方法:
WITH d1 AS (
SELECT 'sph/images///////30_Fairhall_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images///8_Furnival_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images/9_Pennethorne_House.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'rbkc/images/TAVISTOCK_CRESCENT.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'haringey///images/399932thumb.jpg' AS image_path FROM dual
UNION ALL
SELECT 'urbanchoice/images//18190862.jpg' AS image_path FROM dual
UNION ALL
SELECT 'westminster/images//7_Glarus_Court.jpeg' AS image_path FROM dual
)
SELECT TRIM(TRAILING '.' FROM REGEXP_SUBSTR(image_path, '[^/]+\.'))
FROM d1;
以上假设不存在。最后一个/前面的字符。更好的解决方案可能是:
WITH d1 AS (
SELECT 'sph/images///////30_Fairhall_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images///8_Furnival_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images/9_Pennethorne_House.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'rbkc/images/TAVISTOCK_CRESCENT.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'haringey///images/399932thumb.jpg' AS image_path FROM dual
UNION ALL
SELECT 'urbanchoice/images//18190862.jpg' AS image_path FROM dual
UNION ALL
SELECT 'westminster/images//7_Glarus_Court.jpeg' AS image_path FROM dual
)
SELECT REGEXP_SUBSTR(image_path, '[^.]+', INSTR(image_path, '/', -1) + 1)
FROM d1;
也就是说,查找所有非-。请注意,逃逸。在字符类中,final/之后的字符不需要
输出:
30_Fairhall_Court
8_Furnival_Court
9_Pennethorne_House
TAVISTOCK_CRESCENT
399932thumb
18190862
7_Glarus_Court
单斜杠、双斜杠或三斜杠您的数据有三个斜杠,可能有很多次,但我需要最后一次出现“/”和点之前的结果。@Ameya Deshpande:-它给出了无效的左标识符。是的,这是特定于sqlserver的。我没有识别您的Oraclegexp_substr'/sfs/sfsf/file_name.jpeg'/[^./]+[.]jpg | jpeg | png | bmp | gif$,1,1,NULL,1a单斜杠或双斜杠或三斜杠您的数据有三个可能有很多次,但我需要上次出现“/”和点之前的结果。@Ameya Deshpande:-它给出的左标识符无效。是的,这是特定于sqlserver的。我没有识别您的Oraclegexp_substr'/sfs/sfsff/file_name.jpeg',“/[^./]+[.]jpg | jpg | png | bmp | gif$”,1,1,空,1
WITH d1 AS (
SELECT 'sph/images///////30_Fairhall_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images///8_Furnival_Court.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'sph/images/9_Pennethorne_House.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'rbkc/images/TAVISTOCK_CRESCENT.jpeg' AS image_path FROM dual
UNION ALL
SELECT 'haringey///images/399932thumb.jpg' AS image_path FROM dual
UNION ALL
SELECT 'urbanchoice/images//18190862.jpg' AS image_path FROM dual
UNION ALL
SELECT 'westminster/images//7_Glarus_Court.jpeg' AS image_path FROM dual
)
SELECT REGEXP_SUBSTR(image_path, '[^.]+', INSTR(image_path, '/', -1) + 1)
FROM d1;
30_Fairhall_Court
8_Furnival_Court
9_Pennethorne_House
TAVISTOCK_CRESCENT
399932thumb
18190862
7_Glarus_Court