zoukankan      html  css  js  c++  java
  • mysql 异或

    sex 字段只有两个取值:'f' 和 'm' 。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)

    方式一:异或

    UPDATE salary
    SET sex = CHAR(ASCII(sex) ^ ASCII('m') ^ ASCII('f'));

    两个相等的数异或的结果为 0,而 0 与任何一个数异或的结果为这个数。

    sex 字段只有两个取值:'f' 和 'm',并且有以下规律:

    'f' ^ ('m' ^ 'f') = 'm' ^ ('f' ^ 'f') = 'm'
    'm' ^ ('m' ^ 'f') = 'f' ^ ('m' ^ 'm') = 'f'
    

    因此将 sex 字段和 'm' ^ 'f' 进行异或操作,最后就能反转 sex 字段。

    方式二:if

    UPDATE salary
    SET sex = IF(sex = 'm', 'f', 'm');

    方式三:CASE WHEN

    UPDATE salary
    SET sex = CASE sex
        WHEN "m" THEN "f"
        ELSE "m"
    END;

    方式四: ascii加减

    UPDATE salary
    SET sex = CHAR(ascii('m') + ascii('f') - ascii(sex));
    DROP TABLE IF EXISTS salary;
    
    CREATE TABLE salary (
        id INT,
        NAME VARCHAR(100),
        sex CHAR(1),
        salary INT
    );
    
    INSERT INTO salary (id, NAME, sex, salary)
    VALUES ('1', 'A', 'm', '2500'),
        ('2', 'B', 'f', '1500'),
        ('3', 'C', 'm', '5500'),
        ('4', 'D', 'f', '50000');
  • 相关阅读:
    单件模式 Singleton---Design Pattern 5
    Web请求中同步与异步的区别
    zepto和jquery的区别,zepto的不同使用8条小结
    zepto判断左右滑动
    移动web终端交互优化
    Flexbox
    设计移动web
    viewport
    Pixel移动开发像素知识
    获取元素的left值
  • 原文地址:https://www.cnblogs.com/ooo0/p/15189166.html
Copyright © 2011-2022 走看看