測試使用字串型別要注意的地方
目的:瞭解字串要怎麼應用
測試:
SQL> create table t
2 (char_column char(20),
3 varchar2_column varchar2(20)
4 )
5 /
Table created.
SQL> insert into t values ('hello world','hello world');
1 row created.
SQL> select * from t;
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
這裡的CHAR_COLUMN列長度為20,自動把長度定死為20
SQL> select * from t where char_column = 'hello world';
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
SQL> select * from t where varchar2_column = 'hello world';
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
SQL> select * from t where char_column=varchar2_column;
no rows selected
這裡雖然兩列值從顯示來看一模一樣,但是並不相等,因為長度不一樣
SQL> select * from t where trim(char_column) = varchar2_column;
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
SQL> select * from t where char_column = rpad( varchar2_column, 20 );
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
這裡去掉CHAR列中的空格或者讓VARCHAR2增加空格到長度為20時,這兩列值就相等
使用繫結變數時要使用CHAR型別而不是VARCHAR2,為什麼?
測試:以一使用VARCHAR2型別來進行繫結變數操作
SQL> variable varchar2_bv varchar2(20)
SQL> exec :varchar2_bv := 'hello world';
PL/SQL procedure successfully completed.
SQL> select * from t where char_column = :varchar2_bv;
no rows selected
這個時候長度不等,繫結變數不會成功
SQL> select * from t where varchar2_column = :varchar2_bv;
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
SQL>
測試:以下以CHAR型別來進行繫結變數操作
SQL> variable char_bv char(20)
SQL> exec :char_bv := 'hello world';
PL/SQL procedure successfully completed.
SQL> select * from t where char_column = :char_bv;
CHAR_COLUMN VARCHAR2_COLUMN
-------------------- --------------------
hello world hello world
這裡列長度相等,繫結成功
SQL> select * from t where varchar2_column = :char_bv;
no rows selected
SQL>
總結:能不使用CHAR就不使用CHAR,都用VARCHAR2來操作字元資料!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-731471/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基本型別、字串該注意的地方型別字串
- margin-top使用需要注意的地方
- 軟體進行相容性測試需要注意哪些地方?
- 測試NUMBER型別的效能型別
- springMVC的@ResponseBody、@RequestBody使用需要注意的地方SpringMVC
- Python中Lambda使用要注意的幾個地方Python
- 在PHP中使用類可能需要注意的地方PHP
- Java基礎系列(三十六):泛型中需要注意的地方Java泛型
- 使用Context建立一個View需要注意的地方ContextView
- js型別測試學習JS型別
- 使用SequenceFile儲存BytesWritable型別時要注意型別
- delete與delete[]需要注意的地方delete
- jQuery中使用$.each()遍歷陣列時要注意的地方jQuery陣列
- hadoop中Combiner使用中需要注意的地方Hadoop
- 軟體驗收測試 常見測試報告的型別測試報告型別
- C++ auto 型別推斷注意的地方C++型別
- 測試Java中的long,int基本型別Java型別
- expdp測試包含有lob型別的物件型別物件
- 在 jdon 框架中使用日期型別時要注意的問題框架型別
- 軟體測試開發:常見測試型別概念型別
- TypeScript 字串型別TypeScript字串型別
- SCSS 字串 型別CSS字串型別
- JAVA 解析html 型別字串(使用jsoup)JavaHTML型別字串JS
- /etc/fstab檔案需要注意的地方
- 蘋果企業開發者賬號的使用需要注意哪些地方蘋果
- 基本資料型別與字串型別資料型別字串
- 敏捷開發中的7種測試型別敏捷型別
- 路由器測試的型別和方法[轉]路由器型別
- 網路安全滲透測試的型別!滲透測試入門教程型別
- Android Testing學習01 介紹 測試測什麼 測試的型別Android型別
- Redis的字串型別(String)Redis字串型別
- 操作型別之字串型別字串
- String:字串型別字串型別
- 字串型別存在缺陷字串型別
- link流程 建立時需要注意的地方
- 26個提升java效能需要注意的地方Java
- Struts中上傳檔案需要注意的地方
- javascript型別系統——字串String型別JavaScript型別字串