【问题标题】:MySql- convert empty string to nullMySql-将空字符串转换为null
【发布时间】:2022-01-08 02:43:51
【问题描述】:

我在我的 php 方法中编写了一个查询,以更新具有空字符串 '' 的特定字段,将其设置为 NULL..

UPDATE user SET context=NULL WHERE context=''

UPDATE user SET context=NULL WHERE context=""

该方法执行成功后,仍然不会将空字符串的表字段更新为null。可能是什么问题?

试过了:

UPDATE user SET context = NULL WHERE length(trim(context)) = 0

【问题讨论】:

  • 你怎么知道它不起作用? SELECT * FROM user WHERE context='' 是否返回行?
  • 上下文可能不等于''。上下文可能是' '' ' 或更长。你可以试试update user set context = NULL where length(trim(context)) = 0
  • 我在尝试您的解决方案时更新了我的帖子,但仍然没有运气。 '' 仍然保留在上下文字段中。 @zedfoxus
  • 如果该列不允许为NULL,则将其设置为默认值。
  • 这能回答你的问题吗? How to update column with null value

标签: mysql


【解决方案1】:

试试这个。我认为你错过了sql_safe_updates = 0 部分:

$this->addSql("set sql_safe_updates = 0");
$this->addSql("UPDATE user SET context = if(TRIM(context)="",NULL,context");
$this->addSql("set sql_safe_updates = 1");

【讨论】:

  • 是的。非常感谢男人! @solomon1994
  • 这不是UPDATE user SET context = NULL WHERE TRIM(context) = ""的一个非常复杂的替代方案吗?
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多