簡體   English   中英

如何從 Select a substring in Oracle SQL 到一些特定的字符?

[英]How to Select a substring in Oracle SQL from and up to some specific characters?

我正在使用 oracle sql。我想從字符 XY0 開始進行 substr,然后再包含 2 或 3 個字符,直到“-”在字符串中簽名

這些字符可能位於字符串中的任何位置。

原版的

列值
第一行 - 由於 XY0066 導致的錯誤 - 不適合 - 不適合
第二行 - 由於特定的 XY0089 而出錯 - 將不匹配
第 3 行 - 狀況不佳 XY0215- 特殊類型錯誤

提取應該是

結果
XY0066
XY0089
XY0215

我怎樣才能做到這一點?

您可以使用:

SELECT id,
       SUBSTR(value, start_pos, end_pos - start_pos) AS code
FROM   (
  SELECT id,
         value,
         INSTR(value, 'XY') AS start_pos,
         INSTR(value, '-', INSTR(value, 'XY') + 2) AS end_pos
  FROM   table_name
);

或者

SELECT id,
       SUBSTR(
         value,
         INSTR(value, 'XY'),
         INSTR(value, '-', INSTR(value, 'XY') + 2) - INSTR(value, 'XY')
       ) AS code
FROM   table_name;

或使用正則表達式,它輸入起來更短但運行速度會慢得多:

SELECT id,
       REGEXP_SUBSTR(value, 'XY[^-]*') AS code
FROM   table_name;

其中,對於示例數據:

CREATE TABLE table_name (id, value) AS
SELECT 1, 'Error due to XY0066- Does not fit -Not suitable' FROM DUAL UNION ALL
SELECT 2, 'Error due to specific XY0089- Will not match' FROM DUAL UNION ALL
SELECT 3, 'Not in good cond XY0215- Special type error' FROM DUAL;

所有output:

ID 代碼
1個 XY0066
2個 XY0089
3個 XY0215

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM