2013-07-08 75 views
-1

我試圖做一個查詢時احمد用戶搜索沒有哈姆扎(ء)返回與hamzam結果,結果沒有hamza爲如下:Oracle錯誤 - ORA-00936:缺少表達式替換爲功能

select * 
    from EMPLOYEES 
Where (Replace(Replace(Replace(first_name, 'ا', 'أ'), 'و','ؤ'), 'ي', 'ى') 
     like (Replace(Replace(Replace(['احمد'], 'ا', 'أ'), 'و','ؤ'),'ى','ي') 

,但我得到異常:Oracle error - ORA-00936: missing expression

請指教如何解決它。

+0

請發佈「純文本」代碼(並格式化),而不是圖像。 –

+0

@a_horse_with_no_name的問題是,當我在此處粘貼時,查詢看起來已損壞且格式不正確 –

+0

您看過['translate'](http://www.techonthenet.com/oracle/functions/translate.php)嗎? – haki

回答

1

你錯過了2個括號:

SELECT * 
    FROM EMPLOYEES 
WHERE (REPLACE(REPLACE(REPLACE(first_name, 'ا', 'أ'), 'و','ؤ'), 'ي', 'ى')) 
     LIKE (REPLACE(REPLACE(REPLACE(['احمد'], 'ا', 'أ'), 'و','ؤ'),'ى','ي')) 
+0

當我使用上面的查詢時,我得到了錯誤'無效的關係運算符' –

+0

嗯......我想你不能有像兩邊REPLACE() –

+0

你有什麼建議嗎? –

0

ORA-00936: missing expression總是表示語法錯誤。您的發佈代碼中有幾個燈籠褲。

  1. )的數量必須匹配(的數量。
  2. [在Oracle SQL中不是公認的字符。目前還不清楚你試圖與他們達成什麼目標,所以很難知道如何建議你解決這個問題,但你需要以某種方式擺脫它們。
  3. ,(構造是錯誤的。

或者更明顯的燈籠褲。因爲當我試圖糾正你的代碼時,編輯器將我的變化例如)轉回(。當我粘貼成ASCII碼編輯器,我看到這個...

Replace(Replace(Replace(first_name, '?', '?'), '?','?'), '?', '?') 

...賦予的)正確的計數和REPLACE的正確嵌套()調用。

假設:某種字符集錯誤翻譯。所以問題是,SO編輯是否介紹了這種腐敗現象,或者您是否也在客戶端體驗過這種情況?

順便說一下操作的ASCII右側是

REPLACE(REPLACE(REPLACE(['????'], '?', '?'), '?','?'),'?','?')) 

因此,那些流氓[]是真實的(我認爲),你必須將其刪除。鑑於其他「錯誤」可能只是SO編輯的文物,我認爲那些方括號是你應該關注的東西。