我有一张桌子,桌子里面有一个“杯子”,里面有一个“杯子”。
update coffee set cup=cup||'test_add'
这不会引发错误,但它不会将字符串'test_add'添加到列中!另外,柱杯中的值目前还没有。永远花了我一把,当列没有值时,你不能使用这种语法添加文本。这对我来说没有意义,因为列被定义为TEXT列,并且它没有值,所以它似乎等同于我
a=""
a+="test_add"
这个语法有效。另一方面,如果它是
a=None
a+="test_add"
它会抛出错误。所以在我看来,我放在最顶层的代码应该添加文本或抛出错误!!!
答案 0 :(得分:1)
在SQL中,使用NULL
执行几乎任何操作都会返回NULL
。特别是:
NULL || 'test_add'
是NULL。您说cup
列没有值,与您描述的症状一起表示cup IS NULL
为真。因此,cup || 'test_add'
确实会将您的字符串添加到列的值中,问题是NULL || any_string_you_want
为NULL
。
如果您想将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
行为(当你不习惯它时,这通常看起来像一个错误,但这是另一个故事)。