刚刚学习orcale数据库开发,问大家一个关于字符比较的问题,望大家指点一下

wscft 2008-03-09 07:02:44
select case when 5 >43 then '1' else '0' end from dual
--结果---
0
说明这个地方是用数值进行的比较

select case when '5' >'43' then '1' else '0' end from dual
--结果---
1
说明这个地方是用字符进行的比较,'5'的ASCII码大于'4' 所以返回 1

但是下面这个比较语句就看不懂了,希望达人指点指点
select case when '4' >'44' then '1' else '0' end from dual
union all
select case when '4' >='44' then '1' else '0' end from dual
union all
select case when 'a' >='aa' then '1' else '0' end from dual
union all
select case when 'a' >'aa' then '1' else '0' end from dual
----结果-----------------------------------------
0
0
0
0
下面的语句:
select case when '442' >'44' then '1' else '0' end from dual
----结果----------------------
1

我的问题是,当两个字符进行比较时候,从左面开始,如果第一个字符能比较出大小,则直接返回第一个字符间比较的结果,否则继续取第二个字符进行比较,
像'442' 和 '44', 'a'和'aa' 等,
前面的字符大小相等,后面二者的字符个数不等的情况下是怎么比较的呢? 哪位达人给出详细的说明, 谢谢!
...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
清水无语1 2008-03-18
  • 打赏
  • 举报
回复
字符串是逐个比较, 如果中途可以比较出大小, 则返回该结果, 如果到最后仍然相等,则返回相等, ‘5’ ‘55’ 可以理解为
‘5null’ 和‘55’ 比较
wscft 2008-03-18
  • 打赏
  • 举报
回复
谢谢楼上的各位回答!
ruihuahan 2008-03-10
  • 打赏
  • 举报
回复
以第一个对应位置上不等的字符为准
fosjos 2008-03-09
  • 打赏
  • 举报
回复
lz学过编程吗

我学过的所有语言的字符串比较,都是逐个判断字符ASCII,如果前面都相等,多的那个就大

c语言可以这样理解,字符串终止符的ASCII值是0,任何其他字符都比它大
tanjun132 2008-03-09
  • 打赏
  • 举报
回复
可以考虑 LPAD 补‘0’的方式比较
这样就不会出现'5' > '43'的结果

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧