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
- 使用 BenchmarkDotNet 比較指定容量的 List 的效能
- React與Vue模板使用比較(一、vue模板與React JSX比較)ReactVueJS
- PHP之mb_substr使用PHP
- 使用String. localeCompare比較字串字串
- Integer的比較
- SAP ABAP ADBC和Java JDBC的使用比較JavaJDBC
- js 深比較和淺比較JS
- Go和Python比較的話,哪個比較好?GoPython
- reinterpret_cast 和 static_cast 的區別AST
- 集合類的比較
- 使用帶型別判斷的比較判斷型別
- Oracle date 型別比較和String比較Oracle型別
- JavaScript substr()JavaScript
- 字串比較字串
- Integer比較
- 比較集合
- 效能比較
- C++強制型別轉換:static_cast、dynamic_cast、const_cast、reinterpret_castC++型別AST
- 比較典的莫比烏斯反演
- BootStrap, React, Vue的比較bootReactVue
- iOS 版本號的比較iOS
- 幾種排序的比較排序
- 比較重要的例題
- ==和equals方法的比較
- volatile與Atomic的比較
- 浮點數的比較
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- Java的BigDecimal比較大小JavaDecimal
- 7.41 CASTAST
- 比較檔案是否相同,(比較MD5值)
- [C++] 自定義C++比較器比較大小C++
- 使用錯誤的運算子進行字串比較缺陷漏洞字串
- Go 與 C++ 的對比和比較GoC++
- 數字比較