在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
是否有特殊的语法来执行此操作?
答案 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
。
感谢你们的帮助。