Oracle的varchar2如何比较大小

首先要说的是Oracle中字符类型的比较都是基于ASCII码表来实现的,我就简单做个总结。

Oracle中varchar2类型的字符串使用的是非填充空格的标准来进行比较的(表格中右边的那列,注意空格的情况)。


Blank-Padded

Nonpadded
‘ac‘ > ‘ab‘  ‘ac‘ > ‘ab‘
‘ab‘ > ‘a  ‘  ‘ab‘ > ‘a   ‘
‘ab‘ > ‘a‘  ‘ab‘ > ‘a‘
‘ab‘ = ‘ab‘  ‘ab‘ = ‘ab‘
‘a ‘ = ‘a‘  ‘a ‘ > ‘a‘

在比较时(类型一致的前提下),如果长度一致,会先比较第一个字符的在ASCII码中的大小,大的那个则整个字符串大于小的那个字符串,否则就比较下一个字符,方法同此;

如果长度不一致,比较方法同上,只是存在值的字符位的值大于不存在值的,存在空格的也是把另一个字符串对应字符位的值和ASCII码中空格的值进行比较。

存在错误欢迎指正,谢谢!

参考资料(对另外的字符类型也有说明):

https://blog.csdn.net/rockpk008/article/details/41087679

https://blog.csdn.net/xiadingling/article/details/82115860

原文地址:https://www.cnblogs.com/flyingorchid/p/11792943.html

时间: 2024-11-05 21:43:45

Oracle的varchar2如何比较大小的相关文章

oracle 表空间自动扩展大小

select a.FILE_NAME,a.AUTOEXTENSIBLE,a.MAXBYTES,a.INCREMENT_BY  from  dba_data_files a; --AUTOEXTENSIBLE  是否自动扩展 --MAXBYTES 最大 --INCREMENT_BY 自动扩展块数 SQL> show parameter db_block NAME                                 TYPE        VALUE ------------------

oracle 11g 更改日志组大小

1.创建新的日志组 1.alter database add logfile group 4 ('/u01/app/oracle/oradata/jian/redo04.log') size 1024k; 2.alter database add logfile group 5 ('/u01/app/oracle/oradata/jian/redo05.log') size 1024k; 2.切换当前日志到新的日志组 1.alter system switch logfile; 2.alter

Oracle设置Shared Pool的大小

在oracle 10G或者11G版本中,如何合理设置shared pool大小,对oracle数据库的性能影响很大. Shared Pool的大小设置规则如下: 1.查到shared pool设置的合理值,语句如下: select 'Shared Pool' component, shared_pool_size_for_estimate estd_sp_size, estd_lc_time_saved_factor parse_time_factor, case when current_pa

Oracle 查看表空间的大小及使用情况sql语句

SQL1: --1.查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name; --2.查看表空间物理文件的名称及大小 SELECT tablespace_name,

Oracle更改redo log的大小

因为数据仓库ETL过程中,某个mapping的执行时间超过了一个小时, select event,count(*) fromv$session_wait group by event order bycount(*) desc 发现日志切换占用了大量的时间,估尝试增大redo log的大小. (1) redo log的大小可以影响  DBWR 和 checkpoint : (2)larger redo log files provide better performance. Undersize

oracle 查询数据库表空间大小和剩余空间

dba_data_files:数据库数据文件信息表.可以统计表空间大小(总空间大小). dba_free_space:可以统计剩余表空间大小. 增加表空间即向表空间增加数据文件,表空间大小就是数据文件总大小. 检查Oracle各个表空间的增长情况(各表空间使用率) select A.tablespace_name,(1-(A.total)/B.total)*100 used_percent from (select tablespace_name,sum(bytes) total from db

Oracle 10G启动时SGA大小

Oracle 10g 库启动的SGA大小由sga_target与sga_max_size决定,分下面三种情况讨论 sga_target=sga_max_size 参数文件指定值 *.sga_target=599785472 启动 SQL> startup ORACLE instance started. Total System Global Area 599785472 bytes Fixed Size 2022632 bytes Variable Size 171967256 bytes D

Oracle定义varchar2()类型存储汉字的长度问题

varchar2最大是4000字节,那么就看你的oracle字符集:(select userenv('language') from dual;)如果字符集是16位编码的,ZHS16GBK,那么每个字符16位,2字节,所以可以容纳2000字符.如果是32位编码的字符集,那么只能存储 1000个字符. 例如:varchar(50) 表示该字段类型为varchar2类型,长度为50,可以存单字节字符50个,如字母.数字等,可以存储双字节字符25个,如汉字.不同的是,若输入的不足,则以空格填充.var

oracle修改varchar2或nvarchar2类型的时间字段为DATE

ORACLE不区分大小写,且不认识MM,故改为MI,YYYY/MM/DD HH24:MI:SS,为了避免出错,写的时候要大写. start_up_time 类型为DATE类型 completion_time类型为NVARCHAR2类型,值格式为2011-11-23 00:00:00 SQL: update GC_UNDERGROUND set start_up_time = to_date(completion_time,'YYYY/MM/DD HH24:MI:SS'); update GC_U