MySQL用NULL更新Varchar列

时间:2016-01-23 12:54:03

标签: php mysql

在mysql中,我需要使用null值更新Varchar列。我可以使用这样的查询:

update books set Volume='NULL' WHERE BookId=5457 

但它只是用NULL作为字符串更新列 如果我在mysql函数COALESCE上使用此列数据,则返回NULL字符串而不是真实NULL。 我的主要问题在于这句话:

Select Title,COALESCE(Volume,PackId) From books where BookId=5457 

我需要COALESCE才能获得第一个not null,如果我使用qoutes运行我的更新,则不会将NULL添加到mysql行和{ {1}}无法正常工作并返回Volume not PackId

是否有特殊的语法来执行此操作?

2 个答案:

答案 0 :(得分:1)

从Null中删除单引号:

update books set Volume=NULL WHERE BookId=5457 

答案 1 :(得分:1)

我找到了答案。 Mysql中<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>test trou noir</title> <script> var canvas = document.getElementById ("space"); var ctx = canvas.getContext ('2d'); var blackhole; var circle = new Array(); window.onload = init; function init (){ var G = 6.67e-11, //gravitational constant c = 3e8, //speed of light (m/s) M = 12e31, // masseof the blackhole in kg (60 solar masses) Rs = (2 * G * M) / 9e16, //Schwarzchild radius pixel_Rs = Rs / 1e3;// scaled radius blackhole = new Ball (pixel_Rs, 700, 400, "black"); blackhole.draw (); }; function Ball (radius, posX, posY, color){ this.radius = radius; this.posX = posX; this.posY = posY; this.color = color; } Ball.prototype.draw = function (ctx){ var ctx = canvas.getContext ('2d'); ctx.fillStyle = this.color; ctx.beginPath (); ctx.arc (this.posX, this.posY, this.radius, 0, 2*Math.PI); ctx.closePath (); ctx.fill(); }; </script> <style> body { background-color:#021c36 ; margin: 0px;} </style> </head> <body> <canvas id ="space", width = "1400", height = "800"> </canvas> </body> </html> NULL之间存在差异。 empty表示未设置,空表示0;

对于我的问题,当我创建表或更改它以添加NULL类型的新字段时,我应该允许Mysql将Varchar值设置为字段,如下所示:

Null

或禁止Mysql如:

ALTER TABLE `books` ADD `Volume` VARCHAR(25) NULL

正在运行

ALTER TABLE `books` ADD `Volume` VARCHAR(25) NOT NULL

将导致设置真实update books set Volume=NULL WHERE BookId=5457 NULL函数会将其理解为COALESCE

感谢你们的帮助。