關於Oracle字元型別的比較

okone96發表於2007-01-04

今天糾正了一個概念: 以前一直以為char型別的比較就是直接比較,和varchar2比較一樣,汗...........
主要是平時設計表時基本都用varchar2,很少用char

關於字元值的比較, Oracle使用以下兩種比較規則:

1、空格補齊比較語法

對於型別CHAR、NCHAR、text literals、USER函式值, 在進行比較時, 先在較短的那個
字串後補上空格以使長度相等, 然後再進行比較.

所以, 'ab'='ab '

2、非補齊比較語法

對於型別VARCHAR2、NVARCHAR2, 則不用補齊, 直接進行比較.

C:>sqlplus

SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 9月 26 09:26:02 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


連線到:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL> drop table demo;

Table dropped

SQL> create table demo (d1 char(6), d2 varchar2(6));

Table created

SQL> insert into demo values ('1','1');

1 row inserted

SQL> commit;

Commit complete

SQL> select * from demo where d1='1 ';

D1 D2
------ ------
1 1

SQL> select * from demo where d2='1 ';

D1 D2
------ ------

SQL> select * from dual where 'a'='a ';

DUMMY
-----
X

SQL> select * from dual where user='SCOTT ';

DUMMY
-----
X

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750220/viewspace-888321/,如需轉載,請註明出處,否則將追究法律責任。

相關文章