我有一张表:
1 0.22 0.14 0.05
23 11 0.32 0.16
4 NULL 1 0.39
NULL NULL .8 1
NULL .5 .7 NULL
我想将表修改为
1 0.22 0.14 0.05
23 1 0.32 0.16
4 -1 1 0.39
-1 -1 .8 1
-1 .5 .7 -1
如果您看起来我将NULL
改为-1
我在尝试:
SELECT
coalesce([a1], -1), coalesce([a2], -1),coalesce([a3], -1), coalesce([a4], -1)
FROM tableee;
哪个是正确的,但当我执行SELECT *
时,我会获得null
个值的表...
如何修改表格,以便在我执行SELECT *
时,我不会获得NULL
而是-1
?
答案 0 :(得分:7)
如果要更改表格中的值,则需要更新表格:
UPDATE Tableeee t
SET t.a1 = COALESCE(t.a1,-1),
t.a2 = COALESCE(t.a2,-1),
t.a3 = COALESCE(t.a3,-1)
t.a4 = COALESCE(t.a4,-1)
或者您可以将列更改为不可为空,并提供默认值-1。如果您有这个要求,您可能希望这样做。更新数据只是一个绷带,您需要在数据库中强制执行此要求。
答案 1 :(得分:1)
您可以更改表架构,以使列不可为空,并且默认值为-1。这应该改变数据,以便所有NULL值变为-1。
如果您不想实际更改数据而只想更改查询返回的数据集,请考虑根据COALESCE()
查询创建视图。然后,只要您想要看到-1代替NULL,就可以使用该视图。
答案 2 :(得分:1)
没有办法实际修改表,因此使用select *得到-1而不是null。您允许这些列使用空值,因此隐藏空值不是理想的逻辑。
现在说,你有三个选择:
1)将表更新为不允许这些列中的空值,然后将默认值设置为-1(或使用触发器)注意:这需要管理员权限,您可能没有。<登记/> 2)总是用你的coalease或isnull()测试进行选择 3)你可以查看同一个表,然后在视图中选择你的coalesce()或isnull()逻辑,然后你可以从视图中选择*,它会给你相同的表,但是null改变了。
仅供参考,选项2或3有开销,所以只有当#1不是选项时才这样做。