Oracle - 特殊字符問題


 

Oracle更新表字段或者查詢表字段時內容中含有特殊字符&的解決方法

現象

 

 

 

 解決方式

1. 字符串拼接

UPDATE T_MENU_INFO
SET menu_code='/ABeptjk/gakfzx/abczscsppz', menu_name='平台監控-客服中心-操作手冊'||'&'||'視頻配置'
WHERE menu_id='40019';

2. set define off;

-- set define off; 在(PL/SQL的)SQL窗口中執行是無效的, 需要在(PL/SQL的)命令窗口中執行
SQL> set define off; SQL> select * from T_MENU_INFO t where t.menu_name like '%平台監控-客服中心-操作手冊&視頻配置%';

 3. chr(38)

-- 在SQL語句中將'&'替換成chr(38),因為chr(38)是'&'的ASCII碼 
SQL> Select 'Tom' || chr(38) || 'Jerry' from dual;

 

 

( 轉 ) oracle 特殊符號
oracle通配符,運算符的使用
  用於where比較條件的有:
  等於:=、<、<=、>、>=、<>
  包含:in、not in exists、not exists
  范圍:between...and、not between....and
  匹配測試:like、not like
  Null測試:is null、is not null
  布爾鏈接:and、or、not
  通配符:
  在where子句中,通配符可與like條件一起使用。在Oracle中:
  %(百分號): 用來表示任意數量的字符,或者可能根本沒有字符。
  _(下划線): 表示確切的未知字符。
  ?(問號): 用來表示確切的未知字符。
  #(井號): 用來表示確切的阿拉伯數字,0到9。
  [a-d](方括號):用來表示字符范圍,在這里是從a到d。
  單引號('):在Oracle中,應該只使用單引號將文本和字符和日期括起來,不能使用引號(包括單雙引號)將數字括起來。
  雙引號("):在Oracle中,單雙引號含義不同。雙引號被用來將包含特定字符或者空格的列別名括起來。雙引號還被用來將文本放入日期格式。
  撇號('):在Oracle中,撇號也可以寫成彼此相鄰的兩個單引號。為了在供應商名字中間查找所有帶撇號的供應商名字,可以這樣編寫代碼:
  select * from l_suppliers where supplier_name like '%''%'
  &符號:在Oracle中,&符號常用來指出一個變量。例如,&fox是一個變量,稍微有點不同的一種&& fox。每當&fox出現在Oracle腳本中時,都會要求您為它提供一個值。而使用&&fox,您只需要在& &fox第一次出現時為它提供變量值。如果想將&符號作為普通的符號使用,則應該關閉這個特性。要想關閉這個特性,可以運行以下的命令: set define off ,這是一個SQLplus命令,不是一個SQL命令。SQLplus設置了SQL在Oracle中運行的環境。
  雙豎線(||):Oracle使用雙豎線表示字符串連接函數。
  星號(*):select *意味着選擇所有的列,count(*)意味着計算所有的行,表示通配符時,表示0個或任意多個字符。
  正斜杠(/):在Oracle中,用來終止SQL語句。更准確的說,是表示了“運行現在位於緩沖區的SQL代碼”。正斜杠也用作分隔項。
  多行注釋:/*......*/。
  不等於:有多種表達方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM