gpt4 book ai didi

sql - 我们如何在 SQL 参数中输入多个值 - SQL Developer?

转载 作者:行者123 更新时间:2023-12-04 08:13:29 26 4
gpt4 key购买 nike

在 SQL Developer 中,我们可以使用参数来测试具有不同值的查询 - 例如:
我有一张 table 叫 Fruits ( code, name )。我想检索代码的苹果。

SELECT * 
FROM fruits
WHERE name IN (:PM_NAME)
当我填写一个值时它可以正常工作(在这种情况下 :PM_NAME 等于 apple )
enter image description here
但是当我想填写很多值时它不起作用!我已经尝试过这些表格和这些分隔符,但仍然......
apple;orange

'apple';'orange'

('apple','orange')

['apple','orange']

"apple","orange"
enter image description here
简而言之,在 SQL Developer 的 SQL 参数中填写多个值的正确格式是什么?

最佳答案

我不能相信这个“​​技巧”,但解决方案在于正则表达式。
enter image description here
我想搜索多种类型的对象,输入到 :bind 并在 WHERE 子句中使用。

SELECT owner,
object_name,
object_type
FROM all_objects
WHERE object_name LIKE :SEARCH
AND owner NOT IN (
'SYS',
'MDSYS',
'DBSNMP',
'SYSTEM',
'DVSYS',
'APEX_050100',
'PUBLIC',
'ORDS_METADATA',
'APEX_LISTENER'
)
AND object_type IN (
SELECT regexp_substr(:bind_ename_comma_sep_list,'[^,]+',1,level)
FROM dual CONNECT BY
regexp_substr(:bind_ename_comma_sep_list,'[^,]+',1,level) IS NOT NULL
)
ORDER BY owner,
object_name,
object_type;
I first learned of this 'trick' or technique from here.
所以你的查询看起来像这样
SELECT * 
FROM fruits
WHERE name IN (
SELECT regexp_substr(:PM_NAME,'[^,]+',1,level)
FROM dual CONNECT BY
regexp_substr(:PM_NAME,'[^,]+',1,level) IS NOT NULL
)
当 SQL Developer 提示您输入值时,不要引用字符串,只需用逗号分隔它们。此外,没有空格。
所以在输入框中输入
苹果,橙子
我想如果你想要; vs ,然后根据需要更新正则表达式调用。

关于sql - 我们如何在 SQL 参数中输入多个值 - SQL Developer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65832480/

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