数据库中的mysql trim列

时间:2013-01-15 18:31:32

标签: php mysql codeigniter trim

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

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

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

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

输出

|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>";

如果我尝试逐个运行它们就会跑掉......

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

1 个答案:

答案 0 :(得分:1)

不幸的是,MySQL目前(5.5)没有REPLACE()的正则表达式版本。如果没有UDF或几次嵌套调用REPLACE(),那么在MySQL中这样做是首选且速度更快的IMO,不是一个选择...

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

注意:以上内容将替换所有数字。不只是那些正确的。留给未来的读者,但不会在OP的情况下工作。

因此,PHP是您唯一的选择。借用 Marc B

// loop over all rows
$no_ending_digits = rtrim($field, '0123456789');
// update row