oracle实践常用SQL. I' o; h1 L% u, Z' J H
$ o# v7 w; H( ~* D4 Q) F
TableA columnA columnB
1 P; } Y2 Q5 z& d
, R3 K$ D0 @5 a A 1&2 sss* m$ t b, m( A. c$ ?. q" _" h+ K
U1 o b; Y. E) g& c! m select * from A where columnA like '%1&2%';--------------------提示输入变量。! \& O% f0 h: v* E7 U* H7 D
6 T! j' |3 Q7 G1 T
如果想要根据clomnA值,查询sss,怎么办?$ e" q/ c- a' Z8 I
* V9 v( D# W: q- ~. Y! V& R
分析:由于&是oracle中的变量字符(特殊字符)。因此需要将&设置为非特殊字符才能正常查询。
8 V' h0 \4 V( `) c W
$ K, R; x) s4 X7 O- f5 j& K1 X 解决:set define off
' y3 p% @* x7 A, W. [4 V' v7 E7 a 6 o1 Q+ p9 }* v$ a; |8 N; y) M
select * from A where columnA like '1&2';' b# \4 |: l( L( X, q# b
7 Y1 ?0 l$ v% O& v/ p& F& N( h
set define off解释:5 k4 c/ V: F6 i h- C" Q% q
/ s( L: [: X( O7 a# F set define off关闭替代变量功能 在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值。这就意味着你无法将一个含有该符号的字符串输入数据库或赋给变量,如字符串"SQL&Plus"系统会理解为以"SQL"打头的字符串,它会提示你输入替代变量 Plus的值,如果你输入ABC,则最终字符串转化为"SQLABC". set define off 则关闭该功能,"&"将作为普通字符,如上例,最终字符就为"SQL&Plus" set define off关闭替代变量功能 set define on 开启替代变量功能 set define * 将默认替代变量标志符该为"*"(也可以设为其它字符) |