2012-05-23 47 views
1

如何在Oracle Query中執行此操作?這就是說我們想要那個'1'的記錄在該列的大部分位置。如何在Oracle中做簡單子串


AND substring(convert(varchar,TR.MENU_ID_VALUE), 1, 1) = '1' 
+0

本應該說是在sql server中。 –

回答

4

convert function函數將來自一個字符的字符串設置到另一個。語法是convert(<string>, <to character set>, <from character set>)

此外,substring不是Oracle函數,它是substr

如果你不需要轉換字符串,那麼and substr(tr.menu_id_value,1,1)會讓你最左邊的字符。

如果您確實想要轉換字符集,那麼完整列表是available in the documentation,或者您可以查詢v$nls_valid_values。舉例來說,如果你從WE8MSWIN1252 (Windows code-page 1252)轉換爲AL32UTF8 (UTF-8)那麼你的狀態會變成:

and substr(convert(tr.menu_id_value,'AL32UTF8','WE8MSWIN1252'),1,1) = '1' 

從您的評論我猜convert()是SQL-Server函數數據類型之間的轉換。在這種情況下,Oracle相當於to_char。雖然Oracle會隱式執行轉換,但它總是總是最好使用to_char並明確轉換;給你:

and substr(to_char(tr.menu_id_value),1,1) = '1' 

附帶的確切甲骨文相當於是cast()。嚴格地說,如果你想使用format model,從而substr(cast tr.menu_id_value as varchar2(10)),1,1)也給你,你有什麼假設tr.menu_id_value長度後to_char()應該將所用小於或等於10

1

使用SUBSTR

AND substr(tr.menu_id_value,1,1) = '1' 
相關問題