2016-09-24 76 views
0

識別空間無效的標識符我使用ORA-00904:「「:在INSTR

substr(item_name, instr(item_name," ",1,1)-1)  

空間之前,獲得一個項目的名稱。

什麼是正確的做法?

+0

除了明顯的(在Oracle中,你應該使用字符串文字單引號),你寫的公式,你不想要的東西做的。它應該是substr(item_name,1,instr(....)) - 第二個參數告訴你從哪裏開始閱讀(在這種情況下,從第一個字符開始),並且只有第三個參數 - instr()告訴你如何閱讀。 – mathguy

回答

2

嘗試使用單引號

substr(item_name, instr(item_name, ' ' ,1,1)-1)  
1

你的問題是與字符串的字符,這應該是一個單引號。

這通常使用regexp_substr()處理:

select regexp_substr(item_name, '^([^ ]*)[ ]', 1, 1) 
+0

除非代碼變得太複雜,否則最好使用「standard」instr和substr。在這種情況下,該解決方案比正則表達式解決方案更容易閱讀並且效率更高。 – mathguy

+1

@mathguy。 。 。這是查看它的一種方式。我用另一種方式來看待它。第二個詞很有可能是下一個人想要的東西。 –