今天在做一个报表的时候,想用一个sql查询最后结果,但在实现的时候遇到一点问题,我查到的一个字段是varchar型的,多个id的组合(如:1,2,3,并且这个结果是一个selete语句实现的),但是我要在另一个表中查询使用这个id,而这个id是int型的。所以,没办法直接使用这个结果,总会报错说无效的number类型。后面同事帮忙查到一个方法可以把这个结果转成对应的行的记录。
例:我查询的这个字段结果为3,4.
select replace(appr_or_reasons,'|',''',''') from equ_odr_trade_ovr_request where id = 21748;
如下语句可以将这个值转成:
3
4
with temp as
(select '3,4' text from dual)
select regexp_substr(text,'[0-9]+',1,rn) text from temp t1,
(select level rn from dual connect by rownum <= (select length(text)-length(replace(text,',',''))+1 from temp)) t2
最后我便可以直接将上面语句放到in子句中。便可以查到数据
select cor.credit_or_reason
from sds_credit_or_reason cor
where id in(
with temp as
(select (select replace(appr_or_reasons,'|',''',''') from equ_odr_trade_ovr_request where id = 21748) id from dual)
select regexp_substr(id,'[0-9]+',1,rn) id from temp t1,
(select level rn from dual connect by rownum <= (select length(id)-length(replace(id,',',''))+1 from temp)) t2
);
分享到:
相关推荐
函数返回一个同样类型为`varchar2`的结果,其中包含所有需要合并的数据。 ```sql CREATE OR REPLACE FUNCTION F_M_T(INitemid IN VARCHAR2) RETURN VARCHAR2 IS MergeStr VARCHAR2(5000); -- 定义一个变量用于存储...
Oracle支持多种数据类型,包括数值型(如NUMBER、INTEGER)、字符串型(如VARCHAR2、CHAR)、日期时间型(如DATE)、布尔型(BOOLEAN)和大对象(LOB)等。正确选择数据类型对于数据库性能至关重要。 四、条件...
Oracle 10G SQL Reference是Oracle数据库系统的重要文档之一,主要涵盖了在Oracle 10G环境中执行SQL查询、数据操作和数据库管理的核心概念和技术。这个参考手册为数据库管理员(DBA)、开发人员以及数据分析师提供了...
它是SQL标准的一个实现,具有许多Oracle特有的功能和扩展。这个“Oracle SQL帮助文档”很可能包含了关于如何使用Oracle SQL进行数据库交互的详细信息,包括语法、函数、操作和优化策略。 在Oracle SQL中,API(应用...
- **规范要求**:为了使SQL语句更加清晰易读,关键字、保留字、逻辑操作符(如OR、IN、AND等)前后应有一个空格。左括号前和右括号后也应有一个空格。 - **示例**: ```sql SELECT A.COL1, A.COL2, B.COL1 FROM ...
在Oracle数据库中,存储过程是预编译的SQL和PL/SQL代码集合,它们可以接收输入参数、执行复杂的业务逻辑并返回结果。当需要返回的数据不仅仅是单行单列时,可以使用结构化数组来实现多行多列的结果。Java作为常用的...
同时,PL/SQL支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)等,以及复合类型如记录(RECORD)和表类型(TABLE)。 此外,PL/SQL的包(PACKAGE)概念是将相关的过程和...
`SELECT`语句是SQL中最常用也是最强大的语句之一,用于从一个或多个表中检索数据。基本语法为: ```sql SELECT column_name(s) FROM table_name WHERE condition(s) GROUP BY column_name(s) HAVING aggregate_...
例如,有一个表t_row_col,其中包含多行数据,需要将这些行数据合并成一个字符串数据。 可以使用LISTAGG函数来实现多行转换成字符串,例如: ```sql SELECT LISTAGG(cn || ',' || cv) WITHIN GROUP (ORDER BY id) ...
在Oracle数据库中,合并多行记录的字符串是一个常见的需求,特别是在报表或数据分析中。这个问题涉及到字符串的连接和聚合,使得多个记录的某个字段值能够整合到一行。在Oracle中,虽然没有内置的聚合函数直接支持...
5. **子查询**:子查询是在一个更大的SQL语句中嵌套的查询,它可以返回单个值、多行单列的结果集,甚至多行多列的结果集,用于比较、过滤或计算。 6. **视图**:视图是基于一个或多个表的虚拟表,它提供了一种方式...
函数可以是单行函数,对每行数据返回一个结果,也可以是分组函数,基于一组数据返回一个汇总结果,如COUNT、SUM、AVG等。 9. **数据操纵语言(DML)命令**:DML主要包括UPDATE、INSERT、DELETE、EXPLAIN PLAN、...
PL/SQL支持多种数据类型,包括数值型(如NUMBER)、字符型(如VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及复合和记录类型。变量可以在声明部分声明,并在执行部分赋值和使用。 **控制流程语句** PL/...
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...
其中,“行转列”是一种常见的数据处理方式,它指的是将原本存储在多行中的数据转化为单行中的多个字段。这种数据转换方式在报表生成、数据分析等领域非常有用。 #### 二、固定列数的行转列方法 当待转换的列是...
《Introduction to Oracle SQL and PL/SQL》是一本专为初学者设计的教程,全面涵盖了Oracle数据库管理系统中的核心语言——SQL(结构化查询语言)和PL/SQL(过程化语言/SQL)。这本书分为两卷,旨在帮助读者从基础到...
### Oracle SQL & PL/SQL 知识点梳理 ...以上是对Oracle SQL & PL/SQL学习计划的一个详细解读,涵盖了从环境搭建到实际项目实施的全过程,旨在帮助初学者快速入门并掌握Oracle数据库管理与开发的关键技能。
- **编写脚本**: 除了逐条插入,还可以通过编写SQL脚本的方式一次性插入多行数据。 以上是基于Oracle SQL Developer的基本操作介绍,包括创建数据库连接、管理数据库对象、添加表约束以及向表中添加数据等关键步骤...
- PL/SQL支持多种内置数据类型,如 NUMBER、VARCHAR2、DATE、BOOLEAN等,也允许自定义记录类型和嵌套表类型。 - 变量必须先声明后使用,可以进行赋值操作。 4. **控制结构** - 条件语句:IF...ELSIF...ELSE 和 ...
在Oracle数据库中,处理多行记录中的字符串是一项常见的需求,特别是在需要将多个值合并成一个字符串时。本文旨在介绍几种常用的多行记录字符串综合操作方法,并对其进行详细的解析与评估。 #### 合并多行记录的...