只输出最后一个值
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
在查询中我有一个数据字段“节点”。在这个字段中有不同长度的值,例如:
测试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