Sla*_*off 127 sql oracle sqlplus escaping
我试图在我的SQL数据库中按名称查询某一行,它有一个&符号.我试图设置一个转义字符然后逃脱&符号,但由于某种原因这不起作用,我不确定我的问题到底是什么.
Set escape '\'
select * from V1144engine.T_nodes where node_id in(
select node2_id from V1144engine.T_edges where node1_id in(
select node2_id from V1144engine.T_edges where node1_id in(
select node2_id from V1144engine.T_edges where node1_id =
(select node_id from V1144engine.T_nodes where node_name = 'Geometric Vectors \& Matrices')))
and edge_type_id = 1)
and node_type_id = 1
and node_id in (
select node2_id from V1144engine.T_edges where node1_id =
(select node_id from V1144engine.T_nodes where node_name = 'Algebra II')
and edge_type_id = 2);
Run Code Online (Sandbox Code Playgroud)
Imr*_*ich 189
代替
node_name = 'Geometric Vectors \& Matrices'
Run Code Online (Sandbox Code Playgroud)
使用
node_name = 'Geometric Vectors ' || chr(38) || ' Matrices'
Run Code Online (Sandbox Code Playgroud)
38是&符号的ascii代码,在这种形式中它将被解释为一个字符串,没有别的.我尝试了它,它的工作原理.
另一种方法可能是使用LIKE和下划线而不是'&'字符:
node_name LIKE 'Geometric Vectors _ Matrices'
Run Code Online (Sandbox Code Playgroud)
你也会找到一些其他记录的可能性非常低,只有这一个字符有所不同.
Ale*_*ole 100
Escape \默认设置为,因此您无需进行设置; 但如果你这样做,不要用引号括起来.
Ampersand是SQL*Plus 替换变量标记; 但你可以改变它,或者更有用的是在你的情况下完全关闭它,用:
set define off
Run Code Online (Sandbox Code Playgroud)
然后你根本不需要去逃避价值.
小智 27
直接来自oracle sql基础知识书
SET DEFINE OFF
select 'Coda & Sid' from dual;
SET DEFINE ON
Run Code Online (Sandbox Code Playgroud)
没有设置定义,如何逃脱它.
Shi*_*pta 11
为了逃脱,&您可以尝试以下方法:-
set scan offset define offset escape on
然后替换&为/&&为&&其中之一应该至少工作。
另外,如果您使用的是 PL/SQL 开发人员,那么sql 窗口底部有 &图标,请去那里禁用它。请注意,在旧版本中,此选项不存在。
还要确保 set define off 写在脚本的最开头。
| 归档时间: |
|
| 查看次数: |
299277 次 |
| 最近记录: |