Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我有一个带有列图像路径的表,我需要从字符串中生存_Sql_Oracle_Plsqldeveloper - Fatal编程技术网

Sql 我有一个带有列图像路径的表,我需要从字符串中生存

Sql 我有一个带有列图像路径的表,我需要从字符串中生存,sql,oracle,plsqldeveloper,Sql,Oracle,Plsqldeveloper,图像路径及其列名 我想从IMAGE_PATH列获取子字符串,如下所示 表示我需要介于最后一个“/”之后和之前的子字符串 请为我提供解决方案,它将如何修复 尝试以下简单方法使用SUBSTR和INSTR: 编辑:如果您不想使用获取文件扩展名。使用: 输出: 尝试以下简单方法使用SUBSTR和INSTR: 编辑:如果您不想使用获取文件扩展名。使用: 输出: 您可以尝试以下方法: WITH d1 AS ( SELECT 'sph/images///////30_Fairhall_Court.jp

图像路径及其列名

我想从IMAGE_PATH列获取子字符串,如下所示

表示我需要介于最后一个“/”之后和之前的子字符串 请为我提供解决方案,它将如何修复

尝试以下简单方法使用SUBSTR和INSTR:

编辑:如果您不想使用获取文件扩展名。使用:

输出:

尝试以下简单方法使用SUBSTR和INSTR:

编辑:如果您不想使用获取文件扩展名。使用:

输出:


您可以尝试以下方法:

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