mysql值比较函数_mysql 比较函数浅用

今天在操作数据库时,遇到一个问题:修改表中某条数据,比较某个字段原有值和修改值,如果原有值大于修改值,则这个字段不修改,从而引出了是用mysql的比较函数;

举个例子,我现在有一个users表,其中字段分别为id,name,age,sex,id是key。

表中原有数据如下:

+----+------+------+------+

| id | name | age  | sex  |

+----+------+------+------+

| 16 | yang | 5      | s     |

| 17 | hang | 4      | m    |

我想修改id=16的用户的年龄,如果要现今age的值是大于插入数据的值,则不修改。这时我们可以使用mysql的比较函数greatest函数,sql语句为:“ update users set age=greatest(age,10) where id=16”,修改后数据表如下:

+----+------+------+------+

| id | name | age  | sex  |

+----+------+------+------+

| 16 | yang | 10   | s    |

| 17 | hang | 4    | m    |

如果使用on duplicate key update也是能执行的。如 insert into users (id,name,age,sex)  values(16,'tang',12,sex='f') on duplicate key update name='tang',age=greatest(age,16),sex='f';

这句语句是向表中插入数据,如果已存在此key,则修改这条数据(on duplicate key update的用法),执行结果如下:

+----+------+------+------+

| id | name | age  | sex  |

| 16 | tang | 16   | f      |

| 17 | hang | 4    | m    |

同理select中也是可以用的。此外比较函数还有least。

来自mysql文档中的说明:

GREATEST(value1,value2,...)当有2或多个参数时,返回值为最大(最大值的)参数。

LEAST(value1,value2,...)

在有两个或多个参数的情况下, 返回值为最小(最小值)参数。

用一下规则将自变量进行对比:

假如返回值被用在一个INTEGER语境中,或是所有参数均为整数值,则将其作为整数值进行比较。

假如返回值被用在一个REAL语境中,或所有参数均为实值,则 将其作为实值进行比较。

假如任意一个参数是一个区分大小写的字符串,则将参数按照区分大小写的字符串进行比较。

在其它情况下,将参数作为区分大小写的字符串进行比较。

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

mysql> SELECT LEAST(2,0);

-> 0

mysql> SELECT LEAST(34.0,3.0,5.0,767.0);

-> 3.0

mysql> SELECT LEAST('B','A','C');

-> 'A'

暂时用到这么多,后面用上继续补上。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-09-28 00:34

浏览 615

分类:数据库

评论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值