SQL查询从特定列中的每个字段中删除某些文本 - Oracle SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询从特定列中的每个字段中删除某些文本 - Oracle SQL相关的知识,希望对你有一定的参考价值。

我正在尝试转换以下内容:

*----*----------------------------*
| id | file_id                  
*----*----------------------------*    
| 1  | 128804/12/0 
*----*----------------------------*
| 2  | 128876/15/0 
*----*----------------------------*

进入以下:

*----*----------------------------*
| id | file_id                
*----*----------------------------*    
| 1  | 128804    
*----*----------------------------*
| 2  | 128876   
*----*----------------------------*

所以它只给出一列中每个字段的前6个字符(该列有更多的条目)。我需要一个选择而不是重写表。谁知道怎么样?

答案

使用substr()

DEMO

select substr(file_id,0,INSTR(file_id, '/')-1)

OUTPUT:

VAL
128804
另一答案

一个简单的方法是regexp_substr()

select t.*, regexp_substr(file_id, '^[0-9]+') as file_id
from t;

这将返回列值的前导数字。

另一答案
with s (id, file_id) as (
select 1, '128804/12/0'   from dual union all
select 2, '128876/15/0'   from dual union all
select 3, '128876'        from dual union all
select 4, '128876/128876' from dual)
select id, file_id,
regexp_substr (file_id, '[^/]+') as file_id_sub_1,
regexp_replace(file_id, '/.*')   as file_id_sub_2
from s;

        ID FILE_ID       FILE_ID_SUB_1   FILE_ID_SUB_2
---------- ------------- --------------- ---------------
         1 128804/12/0   128804          128804
         2 128876/15/0   128876          128876
         3 128876        128876          128876
         4 128876/128876 128876          128876

以上是关于SQL查询从特定列中的每个字段中删除某些文本 - Oracle SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何从python中的图像中删除某些文本?

如何使用 T-SQL 在数据库中的所有文本字段中搜索某些子字符串

Oracle中如何删除重复数据

如何更改我的 sql 查询,以便删除列中具有某些值的行 [重复]

有没有办法在文本字段表达式中访问SQL查询结果,以有条件地在标题带中显示它?

删除sql视图中的重复记录