新聞中心
本文面向想學(xué)習(xí)Oracle知識(shí)的各位數(shù)據(jù)庫(kù)管理員,希望通過(guò)本文,讓大家對(duì)于Oracle中時(shí)間、數(shù)字、字符格式有更深刻的理解。數(shù)據(jù)庫(kù)也向您推薦《Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)應(yīng)用指南》來(lái)幫助您更好的理解本文。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供旌德網(wǎng)站建設(shè)、旌德做網(wǎng)站、旌德網(wǎng)站設(shè)計(jì)、旌德網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、旌德企業(yè)網(wǎng)站模板建站服務(wù),10余年旌德做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
字符格式
Oracle中字符串的比較有兩類
1.填補(bǔ)空格的語(yǔ)義比較
2.非填補(bǔ)空格的語(yǔ)義比較
填補(bǔ)空格的語(yǔ)義比較:
如果兩個(gè)字符串有不同的長(zhǎng)度,Oracle首先會(huì)在短的字符串那邊末尾添加空格,直到兩個(gè)字符串長(zhǎng)度相等。
Oracle然后按字符順序比較兩個(gè)字符串的值,如果發(fā)現(xiàn)到不同的字符,則按字段順序認(rèn)定大小,如果沒(méi)有發(fā)現(xiàn)不同字符,Oracle則認(rèn)為兩個(gè)字符串相等。這個(gè)規(guī)則意味著,如果只是尾號(hào)中有不同數(shù)目的空格,那么則認(rèn)為兩個(gè)字符串是相等的。如'a '='a'.
使用填補(bǔ)空格的語(yǔ)義比較,Oracle只針對(duì)char,nchar,字面量,或user函數(shù)返回的值。
非填補(bǔ)空格的語(yǔ)義比較:
Oracle通過(guò)字符順序比較兩個(gè)字符串的值。如果發(fā)現(xiàn)到字符值大的則大。如果兩個(gè)字符串長(zhǎng)度不同,則發(fā)現(xiàn)到字符值大的則大,否則長(zhǎng)度大的則大,比如'b'>'ab','ab'>'a'.如果長(zhǎng)度相等,并且各個(gè)位置字符相同,則認(rèn)定為相等。
使用非填補(bǔ)空格的語(yǔ)義比較,Oracle針對(duì)varchar2和nvarchar2。
1.注意使用char,char是定長(zhǎng)類型,不足長(zhǎng)度末尾補(bǔ)空格,比較大小采用填補(bǔ)空格的語(yǔ)義比較
2.注意char與其他字符連接,如
- declare
- a char(3):='ab';
- b char(6):='ab';
- begin
- dbms_output.put_line(a||'c'); --ab c 其中ab和c之間有一個(gè)空格
- dbms_output.put_line(b||'c'); --ab c 其中ab和c之間有4個(gè)空格
- if a||'c' >b||'c' then
- dbms_output.put_line(1); //成立,采用非語(yǔ)義比較。
- end if;
- end;
3.在使用char的sql中,或表類型定義中,確定是定長(zhǎng)的才使用,否則可能導(dǎo)致相關(guān)問(wèn)題,如果有char的,比如要查詢,如where charstring='abcd',后面的字面量最好和char長(zhǎng)度一致
4.其實(shí)char 的效率和varchar2沒(méi)有什么區(qū)別。tom測(cè)試過(guò)。
【編輯推薦】
- Oracle字段的轉(zhuǎn)字符串實(shí)際操作方案
- Oracle數(shù)據(jù)庫(kù)字符集進(jìn)行轉(zhuǎn)換的竅門(mén)
- Oracle字符集運(yùn)用中易出現(xiàn)的問(wèn)題分析
- Oracle數(shù)據(jù)庫(kù)中的字符處理技巧
- 訪問(wèn) Oracle 數(shù)據(jù)庫(kù)的實(shí)例描述
文章名稱:Oracle中時(shí)間、數(shù)字、字符格式詳解
URL鏈接:http://m.fisionsoft.com.cn/article/cogdsdc.html


咨詢
建站咨詢
