1

我有一张桌子,桌子“咖啡”里面有一列“杯子”

update coffee set cup=cup||'test_add'

这不会引发错误,但不会将字符串“test_add”添加到列中!此外,column cup 中的值目前是空的。当列没有任何价值时,您无法使用此语法添加文本,这让我很长时间。这对我来说没有意义,因为该列被定义为 TEXT 列,并且它没有任何价值,所以它似乎等同于我

a=""
a+="test_add"

这种语法有效。另一方面,如果是

a=None
a+="test_add"

它抛出一个错误。所以在我看来,我放在最顶部的代码应该添加文本或抛出错误!!!

4

1 回答 1

1

在 SQL 中,做任何事情NULL都会给你NULL回报。特别是,这:

NULL || 'test_add'

一片空白。您说该cup列没有价值,与您描述的症状一起意味着这cup IS NULL是真的。所以你cup || 'test_add'实际上确实将你的字符串添加到列的值中,问题NULL || any_string_you_wantNULL.

NULL如果您想像空字符串一样对待,请使用COALESCE

合并(X,Y,...

coalesce() 函数返回其第一个非 NULL 参数的副本,如果所有参数均为 NULL,则返回 NULL。Coalesce() 必须至少有 2 个参数。

所以你会做这样的事情:

update coffee set cup = coalesce(cup, '') || 'test_add'

Python 和 SQL 是不同的语言,你不应该期望 Python 的None行为像 SQL 的NULL. 您没有看到错误,您只是看到标准NULL行为(当您不习惯时,这通常看起来像错误,但这是另一回事)。

于 2013-06-04T05:31:30.570 回答