測試使用字串型別要注意的地方
目的:瞭解字串要怎麼應用
測試:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中Lambda使用要注意的幾個地方Python
- 軟體進行相容性測試需要注意哪些地方?
- Java基礎系列(三十六):泛型中需要注意的地方Java泛型
- 使用MVCPager做AJAX分頁所需要注意的地方MVC
- JAVA 解析html 型別字串(使用jsoup)JavaHTML型別字串JS
- 離職那些需要注意的地方
- distinct 去重需要注意的地方
- jQuery中使用$.each()遍歷陣列時要注意的地方jQuery陣列
- C++ auto 型別推斷注意的地方C++型別
- SCSS 字串 型別CSS字串型別
- String:字串型別字串型別
- TypeScript 字串型別TypeScript字串型別
- 基本資料型別與字串型別資料型別字串
- 程式設計師面試IT公司,這些地方你要注意!程式設計師面試
- 軟體驗收測試 常見測試報告的型別測試報告型別
- 測試Java中的long,int基本型別Java型別
- Android Testing學習01 介紹 測試測什麼 測試的型別Android型別
- 操作型別之字串型別字串
- 軟體測試開發:常見測試型別概念型別
- equals中關於空格需要注意的地方
- SAP打補丁時需要注意的地方
- 使用Spring Boot、Kotlin和OpenFeign實現型別安全API測試Spring BootKotlin型別API
- Python單元測試框架pytest常用測試報告型別Python框架測試報告型別
- TypeScript 字串字面量型別TypeScript字串型別
- 型別自定義格式字串型別字串
- 網路安全滲透測試的型別!滲透測試入門教程型別
- 【Redis】redis-cluster需要注意的幾個地方Redis
- 軟體測試報告模板的型別有哪些?測試報告型別
- 金融行業的軟體測試型別細分行業型別
- (四)Python中的字串型別及操作Python字串型別
- 蘋果企業開發者賬號的使用需要注意哪些地方蘋果
- 資料型別和運算子測試題資料型別
- mysql中varchar型別最大長度測試MySql型別
- 測試boot庫下I/O模型型別boot模型型別
- 驗收測試需要注意哪些?
- 資料型別之字串篇資料型別字串
- 基本資料型別之字串資料型別字串
- 本地方法怎麼對映Java層的資料型別Java資料型別
- 專業人士必知,滲透測試工具的型別!型別