程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle中時間、數字、字符格式詳解

Oracle中時間、數字、字符格式詳解

編輯: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. char(3):='ab';  
  3. 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測試過。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved