在 Oracle SQL 中,& 字符作为替代变量的标志,会导致查询时提示输入值。以下是处理方法:
1. 关闭替代变量功能
命令:SET DEFINE OFF;
示例:
SET DEFINE OFF;
SELECT 'http://example.com?param=value&key=123' FROM dual;
效果:& 被视为普通字符,不再提示输入值。
2. 使用 CHR(38) 替换
语法:'前缀' || CHR(38) || '后缀'
示例:
SELECT 'http://example.com?param=value' || CHR(38) || 'key=123' FROM dual;
优势:性能优于字符串拆分,且兼容 SQL*Plus 和 PL/SQL。
3. 字符串拆分
语法:'前缀' || '&' || '后缀'
示例:
SELECT 'http://example.com?param=value' || '&' || 'key=123' FROM dual;
注意:效率最低,需两次字符串连接。
4. 注意事项
单次会话有效:SET DEFINE OFF; 在当前会话内有效,需重新开启会话后重置。
替代方案:SET DEFINE *; 可将替代符改为其他字符(如 *)。
示例对比
| 方法 | 语法 | 适用场景 |
| 关闭替代变量 | SET DEFINE OFF; | 批量导入脚本或工具中 |
| CHR(38) 替换 | CHR(38) | 单条 SQL 语句中 |
| 字符串拆分 | || '&' || | 性能要求不高时 |

2474

被折叠的 条评论
为什么被折叠?



