substr,substrb,cast的使用、比較
SQL> create table test (name varchar2(40));
Table created
SQL> insert into test values ('中國.四川.成都');
1 row inserted
SQL> commit ;
Commit complete
SQL> create table test2 (name varchar2(6));
Table created
SQL> select substr(name,1,6) from test; //substr按字元進行擷取
SUBSTR(NAME,1,6)
----------------
中國.四川.
SQL> insert into test2 select substr(name,1,6) from test; //varchar2按照位元組進行儲存,一個漢字2個位元組
insert into test2 select substr(name,1,6) from test
ORA-12899: value too large for column "DATACENTER"."TEST2"."NAME" (actual: 10, maximum: 6)
SQL> insert into test2 select cast(name as varchar2(6)) from test; //case不起作用,不會進行擷取
insert into test2 select cast(name as varchar2(6)) from test
ORA-12899: value too large for column "DATACENTER"."TEST2"."NAME" (actual: 14, maximum: 6)
SQL> insert into test2 select substrb(name,1,6) from test; //substrb按照位元組進行擷取
1 row inserted
SQL> commit ;
Commit complete
SQL> select * from test2;
NAME
------
中國. //顯示的只有3個字元,5個位元組資料
SQL> select length(name) from test2;
LENGTH(NAME)
------------
4 //字元數為4
SQL> select lengthb(name) from test2;
LENGTHB(NAME)
-------------
6 //位元組數為6
SQL> select lengthb(rtrim(name)) from test2;
LENGTHB(RTRIM(NAME))
--------------------
5 //包含一個空格,如果擷取的長度與漢字的長度不符合(例如2個漢字擷取3個字元,那麼oracle只會擷取一個漢字第三個字元是空格代替,不會出現亂碼的情況)
SQL> declare //在pl/sql中,用case(xxx as varchar2(6))也可以達到擷取位元組的效果。
2 v1 varchar2(40);
3 begin
4 select name into v1 from test;
5 insert into test2 values (cast(v1 as varchar2(6)));
6 end;
7 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
SQL> select * from test2;
NAME
------
中國.
中國.
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-664912/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL中欄位比較型別不匹配錯誤:‘cannot be cast to’SQL型別AST
- 使用perl比較mysql的版本MySql
- XTask與RxJava的使用比較RxJava
- EXCEL,POI,EASYEXCEL的使用和比較Excel
- Python解惑:整數比較 is ==的比較Python
- Integer的比較
- js 深比較和淺比較JS
- React與Vue模板使用比較(一、vue模板與React JSX比較)ReactVueJS
- PHP之mb_substr使用PHP
- Go和Python比較的話,哪個比較好?GoPython
- PHP物件的比較PHP物件
- 【索引】oracle查詢使用索引和不使用索引的比較索引Oracle
- 使用帶型別判斷的比較判斷型別
- SAP ABAP ADBC和Java JDBC的使用比較JavaJDBC
- linux下execl函式的使用和比較Linux函式
- 使用頻率比較高的PHP函式方法PHP函式
- Python的內建比較函式cmp比較原理剖析Python函式
- C++中static_cast, dynamic_cast, const_cast用法/使用情況及區別解析C++AST
- 字串比較字串
- Integer比較
- 使用String. localeCompare比較字串字串
- Oracle date 型別比較和String比較Oracle型別
- 在MongoDB下使用JS和Python的效能比較MongoDBJSPython
- 幾種排序的比較排序
- BootStrap, React, Vue的比較bootReactVue
- iOS 版本號的比較iOS
- shell 下的字串比較字串
- Sandcastle同NDoc的比較AST
- Truncate,Delete,Drop的比較.delete
- 不同DBMS的SQL比較SQL
- ejb 和 javabean的比較JavaBean
- 索引的分析和比較索引
- 比較重要的例題
- ImageMagic 和 GraphicsMagick 的比較
- oracle中字串的大小比較,字串與數字的比較和運算Oracle字串
- /bin/bash 和 /bin/ksh使用的使用者配置檔案的比較
- 比較檔案是否相同,(比較MD5值)
- [C++] 自定義C++比較器比較大小C++