![](/img/trans.png)
[英]How can I write a Oracle SQL query to extract the count of all orders 4 weeks before the last order?
[英]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;
正则表达式模式\\.[^.]+\\.[^.]+$
将从倒数第二个点开始匹配,直到结束的所有内容(也包括最后一个点)。
您可以简单地使用INSTR
和SUBSTR
如下:
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.