gpt4 book ai didi

sql - 返回不存在的值的单个查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:46 24 4
gpt4 key购买 nike

例如,您有一个只有一列的简单表格。即。

CREATE TABLE movies   (title VARCHAR2(255 BYTE))

设置以下数据:

INSERT INTO movies   (title) VALUES ('Scream');
INSERT INTO movies (title) VALUES ('Blair Witch');
INSERT INTO movies (title) VALUES ('Friday the 13th');
INSERT INTO movies (title) VALUES ('Scary Movie');
INSERT INTO movies (title) VALUES ('Hide and Seek');
INSERT INTO movies (title) VALUES ('Alien vs Predator');

是否有单个查询或 PL/SQL 将动态执行以下操作(即无需为每个值手动执行“UNION select 'scream' from dual...”)?

显然这个查询是错误的,但你明白了:

Select * from movies
where title in (
'Scream',
'Scary Movie',
'Exorcist',
'Dracula',
'Saw',
'Hide and Seek'
)

期望的结果是表中不存在记录的“WHERE TITLE IN”子句中每个值的记录。即。

'Exorcist'
'Dracula'
'Saw'

最佳答案

如果您使用的是 10g 或更高版本,您可以构建一个将 CSV 字符串转换为动态表的函数。在 this other response 中查看字符串分词器的代码.

你会像这样使用它:

select * from movies
where title NOT in (
select *
from table (string_tokenizer
(
'Scream, Scary Movie,Exorcist,Dracula,Saw,Hide and Seek'
)

)
)
/

这是一个稍微简单的实现,不需要任何额外的基础设施:

SQL> select * from table(sys.dbms_debug_vc2coll('Scream',
'Scary Movie',
'Exorcist',
'Dracula',
'Saw',
'Hide and Seek'
))
/
2 3 4 5 6 7 8
COLUMN_VALUE
--------------------------------------------------------------------------------
Scream
Scary Movie
Exorcist
Dracula
Saw
Hide and Seek

6 rows selected.

SQL>

这类似于 the Table Value Constructor ,但它仅适用于单列“表格”。

关于sql - 返回不存在的值的单个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com