oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法介紹
我記得我曾經(jīng)在開發(fā)form的時候犯過這樣一個錯誤,對于form中的某個字段,對應(yīng)于數(shù)據(jù)庫中某張表的字段,假設(shè)在數(shù)據(jù)庫中這個字段一般也就用到20個漢字的長度,后來我在開發(fā)form的時候,設(shè)置item類型長度的時候,我慣性的設(shè)置成了50byte,想著就算是20個漢字,最多也就占40個byte長度嘛??墒?,就因為這一個想當(dāng)然,結(jié)果出現(xiàn)錯誤了,后來發(fā)現(xiàn)數(shù)據(jù)庫字符集編碼是utf8,那么應(yīng)該設(shè)置為60。從那以后,每次涉及到給字段設(shè)置長度的時候,我都會特別注意下,到底是啥編碼。
在oracle中,比較常見的可能是length、substr,至少我看到的大部分都是這兩個,要不是昨天看代碼發(fā)現(xiàn)了lengthb、substrb,估計我也遺忘了。length表示的是字符串的字符長度,lengthb表示的是字符串的字節(jié)長度;substr表示根據(jù)字符長度獲取子串,substrb表示根據(jù)字節(jié)長度來獲取字串。下面直接看例子來說明:
SELECT length('葉德華abc') -- length按字符計,漢字、英文、數(shù)字都是1個字符,故這里返回6 FROM dual; SELECT lengthb('葉德華abc') -- length按字節(jié)計,我這里是UTF-8編碼,漢字3個字節(jié),英文一個字節(jié),故這里返回12 FROM dual; SELECT substr('葉德華abc', -- substr按字符截取,截取到a,返回:葉德華a 1, 4) FROM dual; SELECT substrb('葉德華abc', 1, 2) -- substrb按字節(jié)截取,2不足一個漢字長度,返回:兩個空格 FROM dual; SELECT substrb('葉德華abc', 1, 3) -- substrb按字節(jié)截取,3剛好是一個漢字長度,返回:葉 FROM dual; SELECT substrb('葉德華abc', 1, 4) -- substrb按字節(jié)截取,4多余一個漢字少于兩個漢字,返回:葉 加一個空格 FROM dual;
在oracle中應(yīng)該還有其他類似的方法,這里就不總結(jié)了,大概就是這么個意思。補充一下,據(jù)說在oracle中定義字符類型的時候默認(rèn)的長度是byte,比如varchar2(20)表示的是20個字節(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數(shù)據(jù)庫中查詢時怎么使用日期(時間)作為查詢條件
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中查詢時怎么使用日期(時間)作為查詢條件的相關(guān)資料,Oracle數(shù)據(jù)庫下基于日期條件的查詢發(fā)揮著重要的作用,它能夠幫助開發(fā)者實現(xiàn)比較復(fù)雜的數(shù)據(jù)管理任務(wù),需要的朋友可以參考下2024-02-02如何使用Flink CDC實現(xiàn) Oracle數(shù)據(jù)庫數(shù)據(jù)同步
Flink CDC是一個基于流的數(shù)據(jù)集成工具,為用戶提供一套功能全面的編程接口API, 該工具使得用戶能夠以YAML 配置文件的形式實現(xiàn)數(shù)據(jù)庫同步,同時也提供了Flink CDC Source Connector API,本文給大家介紹使用Flink CDC實現(xiàn) Oracle數(shù)據(jù)庫數(shù)據(jù)同步的方法,感興趣的朋友一起看看吧2024-08-08Oracle 中 row_number()、rank()、dense_rank() 函數(shù)的
rank() 與 row_number() 的區(qū)別在于,rank() 會按照排序值相同的為一個序號(以下稱為:塊),第二個不同排序值將顯示所有行的遞增值,而不是當(dāng)前序號加1,下面通過示例介紹下Oracle 中 row_number()、rank()、dense_rank() 函數(shù)的用法,一起看看吧2024-03-03Oracle數(shù)據(jù)泵(expdp)導(dǎo)入導(dǎo)出數(shù)據(jù)的詳細(xì)步驟
這篇文章主要介紹了Oracle數(shù)據(jù)泵(expdp)導(dǎo)入導(dǎo)出數(shù)據(jù)的詳細(xì)步驟,文中詳細(xì)描述了源數(shù)據(jù)庫操作中的數(shù)據(jù)備份和目標(biāo)數(shù)據(jù)庫操作中的數(shù)據(jù)恢復(fù)過程,需要的朋友可以參考下2024-12-12解決Hibernate JPA中insert插入數(shù)據(jù)后自動執(zhí)行select last_insert_id()
這篇文章主要介紹了Hibernate JPA中insert插入數(shù)據(jù)后自動執(zhí)行select last_insert_id()的解決方法。需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12