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

それらを1つずつ実行しようとすると、振れます。

更新行にパッチを適用するためのより良い方法はありますか?

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 に答える