首页 > 解决方案 > 如何搜索特殊字符“|”后的所有数字 使用甲骨文

问题描述

基本上,我在具有特殊字符的字段中几乎没有记录,通常如下所示:

id      Content
1         1|1232
2         23|12323
3         33|233223

我想编写一个查询,选择管道“|”右侧的数字

所以结果应该如下:查询结果

1   =   1232
2   =   12323

分机...

标签: sqloracleoracle11gsubstring

解决方案


您可以使用简单的字符串函数:

SELECT id,
       SUBSTR( content, 1, INSTR( content, '|' ) - 1 ) AS before_pipe,
       SUBSTR( content, INSTR( content, '|' ) + 1 ) AS after_pipe
FROM   table_name

或者,使用正则表达式:

SELECT id,
       REGEXP_SUBSTR( content, '^\d+' ) AS before_pipe,
       REGEXP_SUBSTR( content, '\d+$' ) AS after_pipe
FROM   table_name

其中,对于样本数据:

CREATE TABLE table_name ( id, content ) AS
SELECT 1, '1|1232' FROM DUAL UNION ALL
SELECT 2, '23|12323' FROM DUAL UNION ALL
SELECT 3, '33|233223' FROM DUAL;

两个输出:

ID BEFORE_PIPE AFTER_PIPE
1 1 1232
2 23 12323
3 33 233223

db<>在这里摆弄


推荐阅读