繁体   English   中英

SQL 和 Oracle 查询以提取最后两个期间之前的所有内容

[英]SQL and Oracle query to extract every thing before last two periods

我需要在最后两个时期之前提取所有东西

例如。

输入: AA.BBB.12.11.cc

输出: AA.BBB.12

以下是我正在使用的示例查询,但它仅返回第一个句点之前的字符,但这不是我需要的。

SELECT REGEXP_SUBSTR(t.column,'[^.]+',1,1)
 AS output
 FROM MY_Table  t where t.column is not null and rownum=1

我会在这里使用REGEXP_REPLACE

SELECT REGEXP_REPLACE(t.column, '\.[^.]+\.[^.]+$', '')
FROM MY_table
WHERE t.column IS NOT NULL AND rownum = 1;

正则表达式模式\\.[^.]+\\.[^.]+$将从倒数第二个点开始匹配,直到结束的所有内容(也包括最后一个点)。

您可以简单地使用INSTRSUBSTR如下:

SQL> SELECT
  2      SUBSTR('AA.BBB.12.11.ccCC', 1, INSTR('AA.BBB.12.11.ccCC', '.', -2, 2) - 1) AS RESULT
  3  FROM DUAL;

RESULT
---------
AA.BBB.12

SQL>

- 更新 -

对于评论中提出的问题,请使用以下查询:

SQL> SELECT
  2      SUBSTR('AA.BB.CC.DD', 1, INSTR('AA.BB.CC.DD', '.', 1, 3) - 1) AS RESULT
  3  FROM DUAL;

RESULT
--------
AA.BB.CC

SQL>

干杯!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM