0
UPDATE mytable SET mycolumn= LTRIM(RTRIM(mycolumn));

我用它来从前导和尾随空格中修剪整列,但我想要的是

|ID|Name      |
|1 |demo 6    |
|2 |demo3 500 |

我想要的是通过删除这个int来修剪最后一个char是int的NAME。

输出

|ID|Name      |
|1 |demo      |
|2 |demo      |

单独使用mysql可以吗?或者我需要使用 php 来更新表?

注意:此表包含大约 20K 行

编辑:好的 php 它是,

$s='';
foreach($q as $row){
$d=$row->name;
while(is_numeric(substr($d,-1))){$d=rtrim($d, '0123456789');}
if(is_numeric(substr($row->name,-1)))
$s.="update name_list set name='".$d."' where id='{$row->id}';\n";
}
echo "count:".count(explode('\n',$s))."<br/><pre>$s</pre>";

如果我尝试一一运行它们,它就会耗尽..

有没有更好的方法来修补更新行?

4

1 回答 1

1

不幸的是,MySQL 目前(5.5)没有正则表达式版本的REPLACE(). 在 MySQL 中这样做虽然是首选且速度更快的 IMO,但如果没有UDF或多个嵌套调用REPLACE()......</p>

RTRIM(REPLACE(REPLACE(..., '8', ''). '9', ''))

注意:以上将替换所有数字。不只是那些右边。留给未来的读者,但不适用于 OP。

因此,PHP 是您唯一的选择。借自马克 B

// loop over all rows
$no_ending_digits = rtrim($field, '0123456789');
// update row
于 2013-01-15T18:39:29.047 回答