只输出最后一个值

Output only the last value

在查询中我有一个数据字段“节点”。在这个字段中有不同长度的值,例如:

测试1;测试2;测试3;测试4;

现在我只想得到最后一个值。 这意味着在这种情况下应输出以下内容:

测试4;

这意味着我必须确定最后一个“;”并删除它前面的所有内容,以便只显示最后一个值

例子: select substr('node_5_1571123383558;response_7_1589984037984;', 1, instr('node_5_1571123383558;response_7_1589984037984;', ';') -1) 来自双

这个例子给了我左边的第一个值。但是我需要右边的最后一个值

您可以使用如下查询

SELECT SUBSTR ('exciting;',
               CASE REGEXP_COUNT ('exciting;', ';')
                   WHEN 1
                   THEN
                       1
                   ELSE
                         INSTR ('exciting;',
                                ';',
                                1,
                                REGEXP_COUNT ('exciting;', ';') - 1)
                       + 1
               END)
  FROM DUAL;

Output: exciting;

SELECT SUBSTR ('node_5_1571123383558;response_7_1589984037984;',
               CASE REGEXP_COUNT ('node_5_1571123383558;response_7_1589984037984;', ';')
                   WHEN 1
                   THEN
                       1
                   ELSE
                         INSTR ('node_5_1571123383558;response_7_1589984037984;',
                                ';',
                                1,
                                REGEXP_COUNT ('node_5_1571123383558;response_7_1589984037984;', ';') - 1)
                       + 1
               END)
  FROM DUAL;

Output: response_7_1589984037984;
SELECT REGEXP_SUBSTR( value, '[^;]*;$' ) AS last_value
FROM   table_name

SELECT SUBSTR( value, INSTR( value, ';', -1, 2 ) + 1 ) AS last_value
FROM   table_name

其中,对于示例数据:

CREATE TABLE table_name ( value ) AS
SELECT 'one;' FROM DUAL UNION ALL
SELECT 'two;three;' FROM DUAL UNION ALL
SELECT 'four;five;six;' FROM DUAL

双输出:

| LAST_VALUE |
| :--------- |
| one;       |
| three;     |
| six;       |

db<>fiddle here