oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法介紹
我記得我曾經(jīng)在開發(fā)form的時(shí)候犯過這樣一個(gè)錯(cuò)誤,對于form中的某個(gè)字段,對應(yīng)于數(shù)據(jù)庫中某張表的字段,假設(shè)在數(shù)據(jù)庫中這個(gè)字段一般也就用到20個(gè)漢字的長度,后來我在開發(fā)form的時(shí)候,設(shè)置item類型長度的時(shí)候,我慣性的設(shè)置成了50byte,想著就算是20個(gè)漢字,最多也就占40個(gè)byte長度嘛??墒?,就因?yàn)檫@一個(gè)想當(dāng)然,結(jié)果出現(xiàn)錯(cuò)誤了,后來發(fā)現(xiàn)數(shù)據(jù)庫字符集編碼是utf8,那么應(yīng)該設(shè)置為60。從那以后,每次涉及到給字段設(shè)置長度的時(shí)候,我都會特別注意下,到底是啥編碼。
在oracle中,比較常見的可能是length、substr,至少我看到的大部分都是這兩個(gè),要不是昨天看代碼發(fā)現(xiàn)了lengthb、substrb,估計(jì)我也遺忘了。length表示的是字符串的字符長度,lengthb表示的是字符串的字節(jié)長度;substr表示根據(jù)字符長度獲取子串,substrb表示根據(jù)字節(jié)長度來獲取字串。下面直接看例子來說明:
SELECT length('葉德華abc') -- length按字符計(jì),漢字、英文、數(shù)字都是1個(gè)字符,故這里返回6
FROM dual;
SELECT lengthb('葉德華abc') -- length按字節(jié)計(jì),我這里是UTF-8編碼,漢字3個(gè)字節(jié),英文一個(gè)字節(jié),故這里返回12
FROM dual;
SELECT substr('葉德華abc', -- substr按字符截取,截取到a,返回:葉德華a
1,
4)
FROM dual;
SELECT substrb('葉德華abc',
1,
2) -- substrb按字節(jié)截取,2不足一個(gè)漢字長度,返回:兩個(gè)空格
FROM dual;
SELECT substrb('葉德華abc',
1,
3) -- substrb按字節(jié)截取,3剛好是一個(gè)漢字長度,返回:葉
FROM dual;
SELECT substrb('葉德華abc',
1,
4) -- substrb按字節(jié)截取,4多余一個(gè)漢字少于兩個(gè)漢字,返回:葉 加一個(gè)空格
FROM dual;
在oracle中應(yīng)該還有其他類似的方法,這里就不總結(jié)了,大概就是這么個(gè)意思。補(bǔ)充一下,據(jù)說在oracle中定義字符類型的時(shí)候默認(rèn)的長度是byte,比如varchar2(20)表示的是20個(gè)字節(jié)長度,如果要定義成字符,則varchar2(20 char),不過,一般我們也都用字節(jié)定義。
總結(jié)
以上就是本文關(guān)于oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法介紹的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以參閱:oracle求字符串長度函數(shù)length()和hengthb()簡介 、 Oracle RMAN自動備份控制文件方法介紹 、 oracle 數(shù)據(jù)庫啟動階段分析等。感謝大家對本站的支持。
相關(guān)文章
Oracle?19c的參數(shù)sec_case_sensitive_logon與ORA-01017錯(cuò)誤問題分析
這篇文章主要介紹了Oracle?19c的參數(shù)sec_case_sensitive_logon與ORA-01017錯(cuò)誤,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
oracle SCN跟TIMESTAMP之間轉(zhuǎn)換
本文將詳細(xì)介紹oracle SCN跟TIMESTAMP之間轉(zhuǎn)換,需要的朋友可以參考下2012-11-11
Oracle插入日期數(shù)據(jù)常見的2個(gè)問題和解決方法
這篇文章主要介紹了Oracle插入日期數(shù)據(jù)常見的2個(gè)問題和解決方法,一個(gè)是提示無效的月份問題,一個(gè)是日期插入格式問題 ,需要的朋友可以參考下2014-07-07
Oracle中rank,over partition函數(shù)的使用方法
本文主要介紹Oracle中rank,over partition函數(shù)的用法,希望對大家有所幫助。2016-05-05
Oracle 生成未來三天的整點(diǎn)時(shí)間(步驟詳解)
這篇文章主要介紹了Oracle 生成未來三天的整點(diǎn)時(shí)間,本文通過實(shí)例代碼分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
CentOS6.2上安裝Oracle10g報(bào)ins_emdb.mk錯(cuò)誤處理方法
oracle安裝過程報(bào)ins_emdb.mk錯(cuò)誤,此時(shí)繼續(xù)點(diǎn)擊“continue”即可,待Oracle完成安裝后,再手工執(zhí)行相應(yīng)腳本完成鏈接即可2014-09-09

