mysql函数之比较函数

一、比较规则 

MySQL按照以下规则进行数值比较:

  • 若有一个或两个参数为 NULL,除非NULL-safe <=> 等算符,则比较运算的结果为NULL。
  • 若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较。
  • 若两个参数均为整数,则按照整数进行比较。 
  • 十六进制值在不需要作为数字进行比较时,则按照二进制字符串进行处理。
  • 假如参数中的一个为 TIMESTAMP 或 DATETIME 列,而其它参数均为常数, 则在进行比较前将常数转为 timestamp。这样做的目的是为了使ODBC的进行更加顺利。注意,这不适合IN()中的参数!为了更加可靠,在进行对比时通常使用完整的 datetime/date/time字符串。
  • 在其它情况下,参数作为浮点数进行比较。  

在默认状态下,字符串比较不区分大小写,并使用现有字符集(默认为cp1252 Latin1,同时对英语也适合)。

为了进行比较,可使用CAST()函数将某个值转为另外一种类型。 使用CONVERT()将字符串值转为不同的字符集。

二、部分函数

1、COALESCE(value,...)

返回值为列表当中的第一个非 NULL值,在没有非NULL 值得情况下返回值为 NULL。

2、GREATEST(value1,value2,...)   

当有2或多个参数时,返回值为最大(最大值的)参数。比较参数所依据的规律同LEAST()相同。

3、expr IN (value,...)

expr 为IN列表中的任意一个值,则其返回值为 1 ,否则返回值为0。假如所有的值都是常数,则其计算和分类根据expr的类型进行。这时,使用二分搜索来搜索信息。如IN值列表全部由常数组成,则意味着IN的速度非常之快。如expr是一个区分大小写的字符串表达式,则字符串比较也按照区分大小写的方式进行。 

IN 列表中所列值的个数仅受限于 max_allowed_packet 值。

为了同SQL 标准相一致,在左侧表达式为NULL的情况下,或是表中找不到匹配项或是表中一个表达式为NULL的情况下,IN的返回值均为NULL。

4、ISNULL(expr)

expr 为NULL,那么ISNULL()的返回值为 1,否则返回值为 0

5、INTERVAL(N,N1,N2,N3,...)

假如N < N1则返回值为0;假如N <N2等等,则返回值为1;假如N 为NULL,则返回值为 -1。所有的参数均按照整数处理。为了这个函数的正确运行,必须满足N1 <N2 < N3 < ……< Nn 。其原因是使用了二分查找(极快速)。

example:  mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); 查询结果为: 3

6、  LEAST(value1,value2,...)

在有两个或多个参数的情况下, 返回值为最小 (最小值) 参数。用一下规则将自变量进行对比:

    • 假如返回值被用在一个 INTEGER 语境中,或是所有参数均为整数值,则将其作为整数值进行比较。
    • 假如返回值被用在一个 REAL语境中,或所有参数均为实值,则 将其作为实值进行比较。
    • 假如任意一个参数是一个区分大小写的字符串,则将参数按照区分大小写的字符串进行比较。
    • 在其它情况下,将参数作为区分大小写的字符串进行比较。

假如任意一个自变量为NULL,则 LEAST()的返回值为NULL 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值