【发布时间】:2013-01-15 18:31:31
【问题描述】:
UPDATE mytable SET mycolumn= LTRIM(RTRIM(mycolumn));
我用它来修剪整个列的前导和尾随空格,但我想要的是
|ID|Name |
|1 |demo 6 |
|2 |demo3 500 |
我想要的是通过删除这个 int 来修剪最后一个字符为 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>";
如果我尝试一个一个地运行它们,它就会用完..
有没有更好的方法来修补更新行?
【问题讨论】:
-
如果这是一次性交易,在 php 中执行此操作可能更快。你会花更多的时间来弄清楚 sql 端的字符串操作,而不是简单地将该字段插入 php 并执行
rtrim($field, '0123456789');。 -
您是否尝试过 SELECT INTO 另一个表。顺便说一句,这和一年前的问题是一样的吗stackoverflow.com/questions/6072197/…
-
@MarcB 我同意 PHP 是可行的方法,但是当查询需要很长时间执行时,他可能会遇到麻烦。
-
@Mr.Radical 确切地说,我现在有 8000 行要更新!,我怎么能在单个查询中做到这一点?还是我必须一件一件地做?
-
@Mr.Radical 和 nop 它不是 :) 检查一下
标签: php mysql codeigniter trim