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');
复制代码

 

posted @   草木物语  阅读(998)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示