【问题标题】:Mysql: Set particular value of column using updateMysql:使用更新设置列的特定值
【发布时间】:2018-01-07 21:49:28
【问题描述】:

如何在 mysql 中使用 update 设置列的特定值?

以下是我的代码:

update contact set admin_id = ' ' where admin_id like '%,519,%' and id='31' 

我有一个名为contact 的表,并且我定义了一个列名admin_id,如图所示。我有一个 id,即,519,520,521,现在我只想从admin_id 中删除519,并且只希望,520,521admin_id 列中。

实现这一点的查询应该是什么?

【问题讨论】:

  • 使用replace函数
  • 您确定要存储逗号分隔值吗?这是出了名的糟糕设计。

标签: php mysql sql mysqli sql-update


【解决方案1】:

这应该可行 -

update contact 
set admin_id = replace(admin_id, '519,', '') 
where admin_id like '%,519,%' 
and id='31' 

replace()

【讨论】:

  • 如何在 codeigniter 模型中使用这个查询 @Sougata Bose $re = replace(admin_id,'$client_id,',''); $data = array('admin_id'=>$re); $where = "admin_id like '%$client_id%' and id = '$id'"; $this->db->where($where); $this->db->update('contact',$data);
  • 不确定。但是必须有一些方法来实现原始表达式
  • 好的,但是当我运行这个查询时,它会显示错误,即调用未定义的函数 replace()
  • 这应该会有所帮助 - stackoverflow.com/questions/16435390/…
【解决方案2】:

你可以使用 MySQL REPLACE() 来实现这个

UPDATE contact SET admin_id = REPLACE(admin_id, ',519,', ',') 
WHERE admin_id LIKE '%,519,%' AND id='31' 

【讨论】:

    【解决方案3】:

    我想这样的事情应该可以工作(但没有测试..)

    UPDATE contact
    SET admin_id = REPLACE(admin_id, '519', '')
    WHERE admin_id like '%,519,%' and id='31' 
    

    你可以在这里找到更多:

    https://dev.mysql.com/doc/refman/5.7/en/replace.html

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多