在SQLstring中转义&符号
我想在我的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);
虽然这个问题有类似的解决办法,但问题却大不相同。 他们可能会得到同样的解决scheme,但这并不意味着问题是相同的。
代替
node_name = 'Geometric Vectors \& Matrices'
使用
node_name = 'Geometric Vectors ' || chr(38) || ' Matrices'
38是&符号的ascii代码,在这种forms下,它将被解释为一个string,没有别的。 我试了一下,它的工作。
另一种方法可以使用LIKE和下划线来代替“&”字符:
node_name LIKE 'Geometric Vectors _ Matrices'
你也会发现其他一些logging的机会,这个logging在这个angular色上是不一样的,这个logging相当低。
Escape默认设置为\
,所以你不需要设置它。 但如果你这样做,不要用引号包起来。
&符号是SQL * Plus replacevariables标记; 但是你可以改变它 ,或者在你的情况下更有用地把它完全closures,用:
set define off
那么你根本就不必费尽心思逃离价值。
您可以使用
set define off
使用它将不会提示input
直接从oracle sql基础知识一书
SET DEFINE OFF select 'Coda & Sid' from dual; SET DEFINE ON
没有设定定义,如何逃脱它。
这也适用于:
select * from mde_product where cfn = 'A3D"&"R01'
你可以用string中的双“q "&"
定义字符。
REPLACE(<your xml column>,'&',chr(38)||'amp;')