【问题标题】:Adding (&) dynamically in strings in oracle without using SET DEFINE OFF在不使用 SET DEFINE OFF 的情况下在 oracle 中的字符串中动态添加 (&)
【发布时间】:2018-04-12 10:57:16
【问题描述】:

我有一个 SQL 脚本,我必须在其中插入与号 (&),但我不知道它的位置。我在无法使用 SET DEFINE OFF 的环境中运行此 SQL 脚本。我只能运行 SQL 插入、选择、更新和删除。

【问题讨论】:

  • 您通过什么客户端运行脚本,为什么不能将set 命令添加到脚本中?如果你正在执行单个语句,比如说。 JDBC 那么为什么 & 符号是个问题 - 替换变量是客户端的东西,而不是 SQL 中固有的解释?
  • 我在提供给我的界面中使用这个东西,我只能运行插入命令,没有提供设置定义关闭
  • 好的,那么那个界面在做什么呢?是否调用 SQL*Plus 单独运行每个语句? (您可以在login.sql 中添加set,或者让拥有该接口的人来执行此操作)。但是,您是否真的有将 & 符号解释为替换变量的问题 - 或者您是否预计会出现这种情况?
  • 是的,我遇到了将 & 符号解释为替换变量的问题。是的,SQL 单独运行每个语句。

标签: sql oracle


【解决方案1】:

也许您可以改用chr(38) 来逃避&

select chr(38) as res  from dual

结果

res 
&

您可以将此符号连接到任何位置的任何字符串:

select  'M '  || chr(38) || ' S' as res  from dual

结果

res 
M & S

【讨论】:

  • 这行不通,因为 & 没有明确的位置。它可以出现在字符串的任何位置
  • @SantoshShrestha 您不能在将报表提交到受限“环境”之前对其进行处理吗?如果您可以处理该语句,那么您可以将任何包含&符号的字符串转换为字符串和chr(38) 符号的串联。但是如果你在运行语句之前根本无法处理并且你不能使用SET DEFINE OFF ...那么,我想,你真的有麻烦了......
  • 我想我已经为我的解决方案提出了这个问题
猜你喜欢
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 2020-12-13
相关资源
最近更新 更多