sql - 动态替代变量
问题描述
我正在寻找替代变量是否可能是“动态的”。
例如,我想为可重复脚本使用弹出窗口,提示用户输入两个变量:颜色和数字。但是,即使用户没有输入一个变量,我也需要脚本仍然运行。换句话说,如果留空,它将变量设置为 IS NOT NULL。
这甚至可能吗?
select user
from table
where colour = '&colour'
and number = &number
解决方案
这并不是 Oracle 真正要做的事情(替换变量通常只是为了快速的临时事情,应该在前端处理严肃的报告)。
作为一个黑客,你可以做这样的事情:
select user
from table
where (colour = '&&colour' OR '&&colour' IS NULL)
and (number = to_number('&&number') OR to_number('&&number') IS NULL);
作为旁注,我有点惊讶地发现空字符串被视为NULL
在 Oracle 中。
显然,'' IS NULL
评估为真,'' = ''
评估为假(这是有道理的,因为任何相等性检查NULL
都是假的)
推荐阅读
- php - 尝试使用每个验证器 Yii2 时数组到字符串的转换错误
- laravel - Laravel - 如何在 LaravelChart 模型中添加 where 子句
- c# - 将项目从另一个表单添加到列表时出现问题
- vulkan - 为什么 VkPhysicalDeviceVulkan{11|12}属性不包含 Vulkan 1.2 上的有效数据?
- java - 为什么当我尝试覆盖方法时出现错误
- python - 如何在 Django 中使用“*.objects.values()”
- c++ - 为什么字符串的 move() 会改变内存中的底层数据位置?
- python - 如何使用 pyinstaller 成功执行包含网页抓取代码的 python 脚本
- batch-file - 使用 ERRORLEVEL 检索 InstallUtil 的退出状态
- docker - Nginx 反向代理未使用主机名找到其他内部 Docker 容器