MySQL中使用变量

一、背景:SQL语句多了,但是某一值多个地方使用,而且该值变化还很频繁,这个时候就需要一个一个的改,例如:where语句后的条件值。这个时候如果有变量就好了,那我们只需要改一个地方就好了

先看结果

再看代码

set @order_sn="240820-296715589192538";

update 表名 set 字段 = 1,字段 = 0,字段e = "NO",字段 =null,
字段 = null,字段 = null,字段 = null,字段 = null,字段 = null,字段 = null,字段 = 1,字段 = "待发货" where 字段 COLLATE utf8mb4_general_ci = @order_sn;

delete from 表名 where 字段 COLLATE utf8mb4_general_ci = @order_sn;

delete from 表名 where 字段 COLLATE utf8mb4_general_ci = @order_sn;

delete from 表名 where 字段 COLLATE utf8mb4_general_ci = @order_sn;

delete from 表名 where 字段 COLLATE utf8mb4_general_ci = @order_sn;

二、实现步骤

1. 设置变量
set @order_sn="240820-296715589192538";
2.引用变量
@order_sn
 3.直接引用变量,会报错,因为mysql会默认给变量设置排序规则:utf8mb4_0900_ai_ci,而我们的表排序与变量排序不一致时就会报错
SQL 错误 [1267] [HY000]: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
4.为了避免变量和表排序不一致导致的报错,我们首先去获取表的排序规则,再设置变量的排序规则,mysql中我们可以通过COLLATE设置排序规则
-- 获取表的排序规则
SHOW CREATE TABLE 表名;

-- 设置变量的排序规则
update 表面 set 字段 = 1 where 字段 COLLATE utf8mb4_general_ci = @order_sn;

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值