PL/SQL 逗号分隔列表;删除重复项并放入数组中

2024-03-31

我有一个以逗号分隔的列表作为 PL/SQL 过程中的字符串。我需要

  1. 删除重复项
  2. 将列表放入数组中。

我发现了多种方法可以做到其中之一,但不能同时做到两者。 有什么帮助吗?


有一个众所周知的 SQL 技巧可以将逗号分隔的列表转换为行。只需使用这个技巧,添加一个DISTINCT关键字,以及BULK COLLECT将结果放入您的数组中(我假设您的意思是集合)。

DECLARE
  p_test_string   VARCHAR2 (4000) := 'A,B,C,B,B,D';

  TYPE string_array_type IS TABLE OF VARCHAR2 (4000);

  l_array         string_array_type;
BEGIN
  SELECT DISTINCT REGEXP_SUBSTR (p_test_string,
                        '[^,]+',
                        1,
                        LEVEL)
  BULK   COLLECT INTO l_array
  FROM   DUAL
  CONNECT BY REGEXP_SUBSTR (p_test_string,
                            '[^,]+',
                            1,
                            LEVEL)
               IS NOT NULL
  ORDER BY 1;

  DBMS_OUTPUT.put_line ('l_array.count = ' || l_array.COUNT);
  DBMS_OUTPUT.put_line ('l_array(2) = ' || l_array (2));
END;

Output:

l_array.count = 4
l_array(2) = B
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PL/SQL 逗号分隔列表;删除重复项并放入数组中 的相关文章

  • Oracle 奇怪的 SUM 行为

    我有两个查询 据我了解 这两个查询应该提供相同的结果 但事实并非如此 显然我在这里遗漏了一些重要的观点 我希望你能帮助我 查询 我认为这是错误的 SELECT SUM a amount AS A SUM 10 727 470 FROM bi
  • 如何捕获 PL/SQL 块中的唯一约束错误?

    假设我有一个 Oracle PL SQL 块 它将一条记录插入表中 并且需要从唯一约束错误中恢复 如下所示 begin insert into some table some values exception when update som
  • oracle嵌套表的最大行数是多少

    CREATE TYPE nums list AS TABLE OF NUMBER Oracle 嵌套表中最大可能的行数是多少 UPDATE CREATE TYPE nums list AS TABLE OF NUMBER CREATE OR
  • 如何在oracle中获取表作为输出参数

    我正在尝试将 Oracle 过程调用的 out 参数强制转换为对象 它不起作用 因为 据我了解 我需要定义一个映射 它告诉方法如何转换它 如果地图为空或未正确填充 则它默认为 STRUCT 类型的对象 在我的情况下这是错误的 我已经构建了一
  • Postgresql存储过程中基于会话的全局变量?

    在 Oracle 的 PL SQL 中 我可以使用包定义创建基于会话的全局变量 对于 Postgresql 的 PLpg SQL 这似乎是不可能的 因为没有包 只有独立的过程和函数 以下是 PL SQL 将 g spool key 声明为全
  • 创建和删除表空间 Oracle

    我已经创建了这个表空间 CREATE TABLESPACE IA643 TBS DATAFILE IA643 dat SIZE 500K AUTOEXTEND ON NEXT 300K MAXSIZE 100M 我尝试使用此命令删除它 DR
  • Oracle PL/SQL 将行类型作为构造函数参数传递

    是否可以将 table rowtype 作为构造函数中的参数传递 我有这样的东西 这有效 CREATE OR REPLACE TYPE shape AS OBJECT name VARCHAR2 30 area NUMBER CONSTRU
  • 将十六进制转换为字符串

    我想用HEXTORAW 从 ASCII 十六进制代码 30 获取 char 值 ASCII HEX 30 应返回 varchar 0 该怎么做呢 是HEXTORAW 正确的功能 你可以使用utl raw http docs oracle c
  • 如何从 java.sql.Blob 类型的 zip 文件中读取和提取 zip 条目,而无需将 FileInputStream 或文件路径作为字符串 java

    public static void unzipFiles java sql Blob zip throws Exception String paths byte blobAsBytes zip getBytes 1 int zip le
  • 如何登录Oracle数据库?

    我对 Oracle 数据库中常用的日志记录方法感兴趣 我们的方法如下 我们为要记录的表创建一个日志表 日志表包含原始表的所有列以及一些特殊字段 包括时间戳 修改类型 插入 更新 删除 修改者的 id 原始表上的触发器为每次插入和删除创建一个
  • Oracle 获取列值发生变化的行

    假设我有一张桌子 比如 ID CCTR DATE 1 2C 8 1 2018 2 2C 7 2 2018 3 2C 5 4 2017 4 2B 3 2 2017 5 2B 1 1 2017 6 UC 11 23 2016 还有其他字段 但我
  • sql server GO 相当于 oracle

    我正在为 Oracle 编写迁移脚本 我需要更改表结构 然后用数据填充它 我想先进行结构更改 然后再进行数据更改 在 SQL Server 中我会使用GO分离批次 是否有 SQL ServerGOOracle 中的等效命令 It s and
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • 使用 JPA 时如何在部署时设置序列的架构名称?

    出于安全原因 我们的 Oracle 数据库对象通常属于与登录用户不同的架构 例如 表位于 xx core 中 我们登录的用户是 xx app yy 在我的 persistence xml 中 我定义了一个 orm 文件 以便我可以在部署时指
  • 是否允许在流水线 PL/SQL 表函数中使用 SELECT?

    管道函数的文档指出 在 SQL 语句 通常是SELECT 并且在大多数示例中 管道函数用于数据生成或转换 接受客户作为参数 但不发出任何 DML 语句 现在 从技术上讲 可以使用 SELECT 而不会出现 Oracle 中的任何错误 ORA
  • 如何检查 Oracle 数据库是否存在长时间运行的查询

    我的应用程序使用 Oracle 数据库 速度缓慢或似乎完全停止 如何找出哪些查询成本最高 以便我可以进一步调查 这显示当前处于 活动 状态的 SQL select S USERNAME s sid s osuser t sql id sql
  • 使用 gv$session 判断查询是否挂起

    我有一个在 Oracle 中运行的查询 该查询可能会挂起 也可能不会挂起 它现在已经运行了大约 10 个小时 但根据我正在加载的数据量 这可能并非不合理 我正在查看 gv session 中的会话 想知道是否有一种方法可以转换该信息以查看是
  • 如何将整行(在 SQL 中,而不是 PL/SQL 中)传递给存储函数?

    我遇到以下 非常简单 问题 我想编写一个 Oracle SQL 查询 大致如下 SELECT count MyFunc MyTable FROM MyTable GROUP BY MyFunc MyTable 在 PL SQL 中 可以使用
  • oracle中的区间函数

    Query SELECT INTERVAL 300 month INTERVAL 54 2 year to month INTERVAL 11 12 10 1234567 hour to second FROM DUAL 上述查询的输出是
  • 如何在oracle中使用2位小数进行舍入,如下所示

    您好 我有要求 如果我使用舍入函数 则四舍五入为小数点后两位 它会四舍五入 但如果第三个小数小于 5 则不会四舍五入 我的要求是小数点后第三位和小数第二位应该四舍五入 是否可以 eg 17 813 need to be 17 82 20 1

随机推荐

  • 在循环中重用 StringBuilder 是否更好?

    我有一个关于使用 StringBuilder 的性能相关问题 在一个很长的循环中我正在操纵StringBuilder并将其传递给另一个方法 如下所示 for loop condition StringBuilder sb new Strin
  • 如何使用 Spring Security 中的新密码编码器

    从 Spring Security 3 1 4 RELEASE 开始 旧的org springframework security authentication encoding PasswordEncoder 已被弃用 https jir
  • 如何模拟 Jest/酶测试中的下拉菜单选择?

    我正在尝试为我的 React 组件编写笑话测试 该组件具有如下所示的下拉列表
  • 在 Python 3.4 中从 DataFrame 中删除 NA 值

    import pandas as pd import statistics df print pd read csv 001 csv keep default na False na values print df 我正在使用此代码创建一个
  • lme4 和 languageR 兼容性错误:“输入模型不是 mer 对象”

    我有一个数据集 dat2 我想在其上拟合线性混合效应模型 我过去使用 lmer 包 lme4 作为 pvals fnc 的补充来计算相关的 p 值 但是 由于我使用新的 lme4 1 0 4 和 languageR 1 4 包重新安装了 R
  • 在查询字符串中发布嵌套对象 - Node.js

    我的代码尝试将数据从本地 Node js 服务器发布到 Coldfusion API 我已成功与 API 进行通信并通过请求标头对自己进行身份验证 然而 我在实际传递 JSON 对象时遇到了困难 因为我无法获得正确的结构 API 不接受请求
  • 雷斯克 vs Sidekiq? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在使用Resque对于我的后台进程 但最近我听到了很多关于sidekiq 有人可以比较 区分吗 我特别想知道是否有一种方法可以
  • 使用 Javascript 获取支持 bean 值

    JSF 2 0 莫贾拉 2 0 1 PrimeFaces 3 4 1 有类似的问题 但我需要某物 别的 javascript函数必须等待backing bean方法 该方法正在填充想要从js函数中提取的变量 我想说的是
  • C++ 向量累加

    我试图对向量使用累积函数 vector
  • 在有序数组中添加额外的数字

    在已经上升的有序数组中插入新数字的最佳方法是什么 new number 6 old array array 1 3 4 5 7 8 10 new array must be 1 3 4 5 6 7 8 10 为什么不直接添加它并再次排序呢
  • OpenCV 2.4.1 - 在 Python 中计算 SURF 描述符

    我正在尝试更新我的代码以使用cv2 SURF 相对于cv2 FeatureDetector create SURF and cv2 DescriptorExtractor create SURF 但是 在检测到关键点后 我无法获取描述符 正
  • Android SU 权限:如何使用它们?

    这里有一种情况 我正在使用 Java 开发一个 Android 应用程序 我对这些东西都很熟悉 但现在这是我第一次需要使用 SU 权限 我只需要替换 实际上是重命名 system app 目录中的文件 但看起来我无法以通常的方式执行它 Fi
  • 启动python解释器时显示的消息的含义

    我知道这肯定是基本信息或知识 但我想知道 并且找不到答案 执行后立即显示什么信息或含义是什么python命令并启动解释器 例如 在这种情况下这意味着什么 Win32 上的 Python 3 8 7 tags v3 8 7 6503f05 2
  • Curl 返回 http 状态代码以及响应

    我使用curl 获取http 标头来查找http 状态代码并返回响应 我使用命令获取 http 标头 curl I http localhost 为了获得响应 我使用命令 curl http localhost 一旦使用 I 标志 我就只得
  • JUnit - 初始化程序错误中的异常

    我正在尝试使用静态方法测试一个类 但在这一行中出现错误 FormReferenceDataPopulator target new FormReferenceDataPopulator 这是失败的痕迹 java lang Exception
  • 防止导航到同一片段

    我正在使用带有 BottomNavigationView 的 Android 导航 jetpack 库 我已经实现了 NavHost NavGraph 和我的片段 当我使用操作进行导航时 一切都按预期进行 我使用以下代码来设置一切 val
  • 如何在 Angular 4 中创建分页组件? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个 API 端点 例如 list students page 5 rows 10带分页参数page and size 我想创建一个 a
  • 匹配平衡括号的正则表达式

    我需要一个正则表达式来选择两个外括号之间的所有文本 Example START TEXT text here possible text text possible text more text END TXT Result text he
  • 如何构建一个在用作 constexpr(如断言)时行为不同的自定义宏?

    从 C 14 开始 断言宏可以在函数中使用 即使它们被定义为 constexpr 我知道这与它的计算结果为 true 有关 但我无法弄清楚实际的代码是什么样子 具体来说 如何构建一个宏 该宏在运行时评估的 constexpr 函数中运行时打
  • PL/SQL 逗号分隔列表;删除重复项并放入数组中

    我有一个以逗号分隔的列表作为 PL SQL 过程中的字符串 我需要 删除重复项 将列表放入数组中 我发现了多种方法可以做到其中之一 但不能同时做到两者 有什么帮助吗 有一个众所周知的 SQL 技巧可以将逗号分隔的列表转换为行 只需使用这个技