我只想更新一个值,如果它不是null或空字符串,但我已经尝试了从 COALESCE(new_value, old_value)
至 COALESCE(NullIf(RTrim(new_value),'')old_value)
.
我完全迷茫的想法,我一直在浏览互联网的解决方案,但我找不到任何适合我。
$query = "UPDATE Person SET fornavn=COALESCE($escapedFornavn,fornavn), efternavn='$escapedEfternavn', alder='$escapedAlder', email='$escapedEmail', adresse='$escapedAdresse', telefon=$escapedTelefon WHERE brugernavn='$brugernavn'; ";
我希望上面的查询仅在用户在表单中键入值时更新每个值,如果表单为空,则只应使用旧值。
3条答案
按热度按时间44u64gxh1#
如评论中所建议的,在应用中处理。我希望这个问题能有所帮助。
g52tjvyc2#
如果您使用mysql,您可以做到这一点
COALESCE
假设的功能。也nullif
是必需的,但你用错了。当您使用php生成这段代码时,必须考虑如何处理字符串值与
null
值(字符串值需要引号,null不需要引号):将按预期工作,如果
$esapedFornavn
是有效字符串。但是,如果$esapedFornavn==null
查询将看起来像第一个,而您需要第二个。。。因此,要实现所需的功能,您可以使用
nullif
将空字符串变为实字符串nulls
:基本测试:
唯一的缺点是:不能将某个值设置为空字符串,因为这将保留旧值:
一个解决方法是存储一个空格,然后使用
trim()
无论何时显示:zf2sa74q3#
您应该考虑使用updateselect将数据放入查询中,然后使用
将列设置为自身时,不会更改它。
下面是一个可能的例子。