在 NOT IN 子句中传递分隔字符串

2023-12-08

下面的 SQL 从概念上复制了我试图解决的问题。尽管传递了 NOT IN 子句,但仍返回所有三个记录。

SELECT * FROM (
SELECT 'JACK' AS VALUE FROM DUAL
UNION
SELECT 'JOHN' AS VALUE FROM DUAL
UNION
SELECT 'BOB' AS VALUE FROM DUAL
) WHERE VALUE NOT IN (SELECT 'BOB,JOHN' FROM DUAL);

我有一个表,其中包含一个分隔字符串,我想将其用作从数据集中排除记录的条件。但是,我遇到的问题是返回的字符串没有分解为其分隔项。我想把上面的内容翻译成:

SELECT * FROM (
SELECT 'JACK' AS VALUE FROM DUAL
UNION
SELECT 'JOHN' AS VALUE FROM DUAL
UNION
SELECT 'BOB' AS VALUE FROM DUAL
) WHERE VALUE NOT IN ('BOB','JOHN');

您可以使用 regexp_substr 来解决该问题:

SELECT * FROM (
SELECT 'JACK' AS VALUE FROM DUAL
UNION
SELECT 'JOHN' AS VALUE FROM DUAL
UNION
SELECT 'BOB' AS VALUE FROM DUAL
)
WHERE VALUE NOT IN (SELECT regexp_substr('BOB,JOHN','[^,]+', 1, LEVEL) FROM dual CONNECT BY regexp_substr('BOB,JOHN', '[^,]+', 1, LEVEL) IS NOT NULL)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 NOT IN 子句中传递分隔字符串 的相关文章

  • 如何在 Oracle PLSQL 中提交单个事务

    我需要编写一个 PL SQL 过程 在这个过程中 我需要在其自己的事务范围内调用另一个过程 并提交它 无论主事务是否失败或提交 换句话说 我需要类似的东西REQUIRES NEW交易传播 就像是 procedure mainProcedur
  • DBMS_UTILITY.COMPILE_SCHEMA(schema => '',compile_all => FALSE) 不会编译无效的包体

    的召唤 BEGIN DBMS UTILITY COMPILE SCHEMA schema gt
  • 如何从 pl/sql 包运行 http Web 服务请求

    我开发了一个新的程序来调用 Web 服务 但当我运行它时 它显示 Oracle 适配器错误 您能指导我如何解决此错误吗 下面的代码有问题吗 Formatted on 17 07 2014 16 49 02 QP5 v5 185 11230
  • SQL 按 IN 子句中的元素排序

    我有一个ITEM表 我想返回按 IN 子句中通知的相同顺序排序的结果 这些 ID 由用户告知 今天我有这个 SELECT FROM ITEM WHERE ITEM ID IN 45 2 671 6 ORDER BY CASE ITEM ID
  • Oracle 中仅在一列上不同

    我想在下表中使用不同的值 但仅在 PlayerID 列上使用 这就是我现在所拥有的 MATCHID PLAYERID TEAMID MATCHDATE STARTDATE 20 5 2 14 JAN 12 01 JUN 11 20 5 4
  • 使用 Hibernate 或 Spring 打印 DBMS_OUTPUT.put_line

    我想知道 Hibernate 或 Spring 或任何第 3 方库是否提供将 DBMS OUTPUT put line 消息直接打印到 system out 或日志文件的能力 目的是在控制台中同时显示 PLSQL 日志消息和 java 日志
  • 无法在 SQL Developer 中打开 View->DBA 菜单(已安装 Oracle 12C 标准版)

    我已经安装了Oracle 12C标准版 那里一切正常 我还连接了Oracle SQL Developer Client 4 0 从中我可以访问表 索引等 我试图通过单击 View gt DBA 菜单从 SQL Developer Clien
  • 如何使用 tnsname 从 Ant 连接到 Oracle 数据库?

    我正在寻找类似于 Ant sql 任务的东西 但它将接受以下格式的 JDBC url jdbc oracle thin TNS NAME 一种可能的方法似乎是编写我自己的 Ant 任务 该任务使用 OracleDataSource 来创建连
  • Oracle 和 EDB (Postgres) 中的日期差异

    如果是甲骨文 查询 select SYSDATE TO DATE 23 03 1022 dd mm yyyy from dual 正在给出输出 SYSDATE TO DATE 23 03 1022 DD MM YYYY 21715 2233
  • 在行之间随机排列一列

    如何有效地洗牌大型 1m 到 5m 记录 表的内容 已知该列具有唯一值 但您可以假设为此目的删除了所有约束 我的头痛主要是因为我正在更新我选择的同一列 我的目标是使用 PL SQL 来完成此操作 以便我可以以编程方式执行其他操作 例如记录或
  • 如何编写Alter Table并添加新列?

    我有一个表 有 3 列 A B C 其中也有行 A 列是主键 现在 根据新的要求 我需要添加新的 D E 和 F 列 另外 我需要从 A 列中删除以前的主键 并为 D 列添加新的主键 E 列和 F 列为 NULL 请帮助我创建 alter
  • SQL在单个命令中在表中添加列和注释

    我的 Web 应用程序使用 Oracle 11g 我想向现有表添加列和注释 我可以使用以下命令轻松做到这一点 ALTER TABLE product ADD product description VARCHAR2 20 and COMME
  • 如何从 pl sql 过程运行 sql 脚本

    我有一个类似的程序 CREATE OR REPLACE PROCEDURE test is BEGIN DBMS OUTPUT PUT LINE This is a Test END 我想运行一些存储在当前目录中的sql脚本 我可以使用 s
  • 使用 Python 使用正确的编码从 Oracle 导入

    我很抱歉提出一个字符编码问题 因为我知道你们每天都会遇到很多问题 但我无法弄清楚我的问题 所以我还是问了 这是我们正在做的事情 使用 Python 从 Oracle DB 获取数据并cx Oracle 使用 Python 将数据写入文件 使
  • Oracle BLOB 提取非常慢

    从我管理的 oracle 10gR2 10 2 05 数据库中提取 BLOBS 时 我遇到性能问题 我有大约 400 个存储为 BLOBS 的文件 我需要将它们写入文件系统 下面是我的代码 当我执行这个过程时 前 8 个左右的文件会在几秒钟
  • Oracle数据库中的自增主键

    我想在 SQL Server 的列中实现标识或自动递增值 CREATE TABLE RollingStock Id NUMBER IDENTITY 1 1 Name Varchar2 80 NOT NULL 如何才能做到这一点 正如 Orb
  • 使用绑定变量动态传递表名和列名

    有没有办法使用绑定变量将列名和表名动态传递给查询 这可以通过使用简单的串联运算符来完成 但我想要一种不同的方法来实现这一目标 EDIT OPEN abc cur FOR Select column name from table name
  • Oracle 函数编译成功,但在执行 PLS-00221 时抛出错误:不是过程或未定义

    我有简单的oracle功能 create or replace function abs test func test in in number return number is test out number BEGIN test out
  • 创建触发器

    如何启动触发器 以便在未付余额超过 50 美元的情况下无人能够租借电影 这里有一个跨行表约束 即你不能只放置一个 OracleCONSTRAINT在列上 因为它们一次只能查看一行中的数据 Oracle 仅支持两种跨 行约束类型 唯一性 例如
  • 如何在游标中使用嵌套表

    CREATE PROCEDURE p cur OUT a cur IS type rec is record a varchar2 2 b number c number type tab is table of rec tab1 tab

随机推荐