Oracle中的資料類型隱式轉換(implicit conversion)

來源:互聯網
上載者:User

和其他的關係型資料庫一樣,oracle中也能進行一些隱式的資料轉換,這對我們寫SQL語句有非常用,我們可以不必麻煩地手動轉化很多類型的字元。雖然前面我們介紹了一些使用例如to_char,to_date的函數進行強制轉換的方法,但是隱式轉換也還是不錯的。

Oracle可以隱式地進行一些變數類別之間轉化,例如從字串轉換到數值,看下面的例子。

SQL> select ename,sal from emp where sal = ‘1100′;

 

ENAME SAL

——————– ———-

SMITH 1100

ADAMS 1100

 

這裡用了對員工的工資進行了選擇,我們明知道員工的工資是數值型的,但我們故意把他寫成了字串型的。結果oracle仍然得到了正確的結果。這說明oracle進行了隱式的從字串到數值直接的轉換。

再比如下面的例子。

SQL> Select last_day(’26-4月 -08′) from dual;

 

LAST_DAY(’

———-

30-4月 -08

這裡我們的last_day函數本來是需要提供一個日期類型的參數,我們故意提供了一個字串類型的參數。但oracle仍然給我們返回了正確的結果,這說明oracle內部進行了從字串到日期類型的隱式轉換。

學要說明的是,如果這個例子在你的機器上沒有成功的執行,那很又能是你的預設日期格式和這裡的不同,如果你不知道你的日期格式的話,你可以用select sysdate from dual 這條SQL語句返回的結果來查看你的機器到底是什麼日期格式。一般這個和NLS_lang參數的值有關

這兩個例子都說明了oracle內部確實能進行某些隱式的函數轉換。下面是oracle中隱式轉換的一般情況。

Varchar2 or Char

Number

Varchar2 or Char

Date

Number

Varchar2

Date

Varchar2

 

需要注意的就是從Varchar2、char到date的隱式轉換過程中,必須保證其格式是原生預設時間格式。

除了隱式轉換以外,oracle還提供了更為靈活的資料類型的顯示轉換,這種轉換方式更為靈活。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.