在SQL中执行UPDATE查询时,当变量为空时,我希望不更新记录。但是,当填充变量时,应该更新记录。
因此,在示例中,数据库中的myAge字段当前的值为20(类型为int)。 执行以下查询后,记录仍应为20。
var uniqueInOrder = function (iterable)
{debugger;
return [].filter.call(iterable,(function (a, i) { return iterable[i - 1] !== a }));
}
console.log(uniqueInOrder("aaaaaBBBDSJJJJ"))
Ps:我知道我可以通过PHP检查变量是否为空,但我想知道如果这可以在SQL中实现吗?
答案 0 :(得分:2)
您可以在SQL中使用IF
构造来检查值是否为空:
$age = mysql_real_escape_string($age);
db_con->query("UPDATE info SET myAge = IF('".$age."' = '', myAge, ".$age.") WHERE account_id = 1");
如果传递的PHP变量为空,则设置旧的myAge
。
签入PHP更有意义,您可以保存数据库查询。
将该变量传递给数据库的方式存在潜在危险。如果您还不了解mysql_real_escape_string
,请立即查看。
更好的是,开始使用为您逃避值的数据库包装器。
答案 1 :(得分:1)
如果您只关心一个字段,我会将条件添加到where
。
目前尚不清楚你的意思是空的。这可以是NULL
或空字符串。我的猜测是myAge
是一个数字,所以NULL
将是“空的”:
UPDATE info
SET myAge = ".$age."
WHERE account_id = 1 AND myAge IS NOT NULL;
如果您愿意,也可以在SET
中执行此操作:
UPDATE info
SET myAge = (CASE WHEN myAge IS NOT NULL THEN ".$age." END)
WHERE account_id = 1;
如果您要像这样更新多个列,则必须执行此操作。我更喜欢CASE
而不是IF()
,因为CASE
是ANSI标准,并且在大多数数据库中都可用。