欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL中N/A和NULL对SELECT...INTO语句的影响

程序员文章站 2022-03-08 22:20:34
一、前言 编写mysql函数,函数运行结果错误,发现是由于使用SELECT...INTO对重复使用的变量赋值失败导致错误。重复使用一个变量,第二次变量赋值失败,仍然是首次赋值的值,原始是第二次查询结果是N/A。SELECT N/A INTO 变量; -- 这种赋值方式会赋值失败,会保留上次的值。二、测试1.创建测试数据表CREATE TABLE test ( id INT auto_increment, num INT, PRIMARY KEY ( id ) );......

一、前言

       编写mysql函数,函数运行结果错误,发现是由于使用SELECT...INTO对重复使用的变量赋值失败导致错误。

重复使用一个变量,第二次变量赋值失败,仍然是首次赋值的值,原始是第二次查询结果是N/A。

SELECT N/A INTO 变量;   -- 这种赋值方式会赋值失败,会保留上次的值。

二、测试

1.创建测试数据表

CREATE TABLE test ( id INT auto_increment, num INT, PRIMARY KEY ( id ) );

2.插入数据

INSERT INTO `demo`.`test`(`id`, `num`) VALUES (2, NULL);
INSERT INTO `demo`.`test`(`id`, `num`) VALUES (3, 3);

3.测试

(1)情景一:数据库中无此条数据

set @a = 100;

SELECT num from test where id = '1' into @a;

-- SELECT num from test where id = '2' into @a;

-- SELECT num from test where id = '3' into @a;

SELECT @a;

结果:100

(2)情景二:数据库中存在此条数据,但是数据为null

set @a = 100;

-- SELECT num from test where id = '1' into @a;

SELECT num from test where id = '2' into @a;

-- SELECT num from test where id = '3' into @a;

SELECT @a;

结果:Null

(3)情景三:数据库中存在词条数据,并且值是3

set @a = 100;

-- SELECT num from test where id = '1' into @a;

-- SELECT num from test where id = '2' into @a;

SELECT num from test where id = '3' into @a;

SELECT @a;

结果:3

本文地址:https://blog.csdn.net/cs373616511/article/details/107318142