Oracle中時間、數字、字元格式設定詳解

來源:互聯網
上載者:User

本文面向想學習Oracle知識的各位元據庫管理員,希望通過本文,讓大家對於Oracle中時間、數字、字元格式設定有更深刻的理解。BKJIA資料庫也向您推薦《Oracle資料庫開發應用指南》來協助您更好的理解本文。

字元格式設定

Oracle中字串的比較有兩類

1.填補空格的語義比較

2.非填補空格的語義比較

填補空格的語義比較:

如果兩個字串有不同的長度,Oracle首先會在短的字串那邊末尾添加空格,直到兩個字串長度相等。

Oracle然後按字元順序比較兩個字串的值,如果發現到不同的字元,則按欄位順序認定大小,如果沒有發現不同字元,Oracle則認為兩個字串相等。這個規則意味著,如果只是尾號中有不同數目的空格,那麼則認為兩個字串是相等的。如'a '='a'.

使用填補空格的語義比較,Oracle只針對char,nchar,字面量,或user函數返回的值。

非填補空格的語義比較:

Oracle通過字元順序比較兩個字串的值。如果發現到字元值大的則大。如果兩個字串長度不同,則發現到字元值大的則大,否則長度大的則大,比如'b'>'ab','ab'>'a'.如果長度相等,並且各個位置字元相同,則認定為相等。

使用非填補空格的語義比較,Oracle針對varchar2和nvarchar2。

1.注意使用char,char是定長類型,不足長度末尾補空格,比較大小採用填補空格的語義比較

2.注意char與其他字元串連,如

 
  1. declare 
  2. a char(3):='ab';  
  3. b char(6):='ab';  
  4. begin 
  5. dbms_output.put_line(a||'c'); --ab c 其中ab和c之間有一個空格  
  6. dbms_output.put_line(b||'c'); --ab c 其中ab和c之間有4個空格  
  7. if a||'c' >b||'c' then 
  8. dbms_output.put_line(1); //成立,採用非語義比較。  
  9. end if;  
  10. end; 

3.在使用char的sql中,或表類型定義中,確定是定長的才使用,否則可能導致相關問題,如果有char的,比如要查詢,如where charstring='abcd',後面的字面量最好和char長度一致

4.其實char 的效率和varchar2沒有什麼區別。tom測試過。

相關文章

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.