【问题标题】:php search/replace empty records in mysqlphp搜索/替换mysql中的空记录
【发布时间】:2011-10-24 19:39:05
【问题描述】:

尝试使用 php/mysql 进行搜索和替换。我在指定的表头/列中执行此操作。当我的搜索词有值时,它可以正常工作。但是我想在指定列中搜索一个空字段并替换为一个值。当我的搜索词为空字符串时,它无法进行搜索和替换。有什么帮助吗?

$SearchAndReplace_header = isset($_POST['SearchAndReplace_header']) ? $_POST['SearchAndReplace_header'] : "";

$SearchAndReplace_search_term = isset($_POST['SearchAndReplace_search_term']) ? $_POST['SearchAndReplace_search_term'] : "";

$SearchAndReplace_replace_with = isset($_POST['SearchAndReplace_replace_with']) ? $_POST['SearchAndReplace_replace_with'] : "";

//foreach($fields as $key => $val) {
 //   if($SearchAndReplace_header == "all" || ($SearchAndReplace_header == $val)) {
        // replace column value with parameter value
        $sql = "UPDATE ".$table_name." SET ".$val." = REPLACE(".$val.",'".$SearchAndReplace_search_term."','".$SearchAndReplace_replace_with."')";                                              
        $db->query($sql);
   // }
  // }

【问题讨论】:

  • 你能解释一下什么是空记录吗?不存在的记录?或记录匹配某些WHERE 子句?
  • null 值添加一个例外。我认为REPLACE()遇到它时找不到可以替换的东西。
  • @ajreal: 具有空/空值的空记录
  • @ajreal:我明白了。但是你可以为我的代码做一个例子吗?

标签: php mysql sql replace


【解决方案1】:

您不能对空字段进行替换,您必须直接设置该字段。

UPDATE table 
SET column = 'value' 
WHERE column = '' or column is null 

如果您想在一个查询中涵盖这两种情况,您可以执行以下操作:

UPDATE table 
SET column = CASE 
                 WHEN column IS NULL OR COLUMN = '' 
                     THEN 'replace' 
                 ELSE
                      REPLACE(column, 'find', 'replace')
             END CASE

【讨论】:

  • 你就不能只有一个普通的 if,因为你只有 2 个案例吗? SET column = IF(column IS NULL OR column = '', 'replace', REPLACE(column, 'find', 'replace'))
  • @Puggan Se:请在我的代码上试一试,让我看到清晰的画面
猜你喜欢
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 2023-03-11
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 2014-09-19
相关资源
最近更新 更多