关于Oracle字符类型的比较

今天纠正了一个概念: 以前一直以为char类型的比较就是直接比较,和varchar2比较一样,汗...........
主要是平时设计表时基本都用varchar2,很少用char

关于字符值的比较, Oracle使用以下两种比较规则:

1、空格补齐比较语法

对于类型CHAR、NCHAR、text literals、USER函数值, 在进行比较时, 先在较短的那个
字符串后补上空格以使长度相等, 然后再进行比较.

所以, 'ab'='ab '

2、非补齐比较语法

对于类型VARCHAR2、NVARCHAR2, 则不用补齐, 直接进行比较.

[@more@]

C:>sqlplus scott/tiger@vm_db

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

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3898/viewspace-867212/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/3898/viewspace-867212/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值