在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;')