开发者社区> 问答> 正文

mysql中如何根据字符串的排列规则来更新

需求是这样的:
有一张表number_prices: 两个主要字段 number varchar(4) 和 price int。
number字段的值从‘0000’~‘9999’,每一条记录现在有一个规则f来确定price的值,规则是:
f:

if number like 'AAAA' then price = 100,
else if number like 'AABB' then price = 50,
else if number like 'ABBA' then price = 40,
...

该怎样写sql语句?

展开
收起
蛮大人123 2016-02-07 13:05:06 2411 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    因为mysql不支持反向引用,所以放弃正则,只能用最原始的if else方式。
    UPDATE temp t SET t.price`=
    CASE WHEN (SUBSTRING(t.number,1,1)=SUBSTRING(t.number,2,1) AND
    SUBSTRING(t.number,1,1)=SUBSTRING(t.number,3,1) AND SUBSTRING(t.number,1,1)=SUBSTRING(t.number,4,1))=TRUE
    THEN 100
    WHEN (SUBSTRING(t.number,1,1)=SUBSTRING(t.number,2,1) AND
    SUBSTRING(t.number,3,1)=SUBSTRING(t.number,4,1) AND SUBSTRING(t.number,2,1)<>SUBSTRING(t.number,3,1))=TRUE
    THEN 50
    WHEN (SUBSTRING(t.number,1,1)=SUBSTRING(t.number,4,1) AND
    SUBSTRING(t.number,2,1)=SUBSTRING(t.number,3,1) AND SUBSTRING(t.number,1,1)<>SUBSTRING(t.number,2,1))=TRUE
    THEN 40
    ELSE 0 END;`

    2019-07-17 18:38:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像