4

下にこの表があり、 の列から' 999page 'の番号付けプレフィックスを削除したいと考えています。template_id

page_id    template_id    url
1          9991           a
2          9992           b
3          9993           c
4          4              d

以下の更新されたデータを取得できます

page_id    template_id    url
1          1              a
2          2              b
3          3              c
4          4              d 

この種のプレフィックスを削除する方法はありますか?

4

2 に答える 2

6

質問に示されているデータを取得するには:

SELECT
  page_id,
  SUBSTRING(template_id, IF(template_id RLIKE '^999', 4, 1)) AS template_id,
  url
FROM page

または、テーブルを永続的に更新する場合:

UPDATE page
SET template_id = SUBSTRING(template_id, 4)
WHERE template_id RLIKE '^999'

MySQL の暗黙的な型変換が残りを処理します。

于 2012-04-30T17:15:00.687 に答える
2

複雑なクエリを作成したくない場合、またはさらに操作が必要な場合は、次のように実行できます。

while($r = mysql_fetch_assoc($q)) {
   $newTemplateID = (string) $r['template_id'];
   if (substr($newTemplateID,0,3) === 999 ) {
     $newTemplateID = substr($newTemplateID,3);

     mysql_query("UPDATE tbl 
                    SET template_id = {$newTemplateID} 
                    WHERE page_id = {$r['page_id']} 
                    LIMIT 1");
   }
}
于 2012-04-30T17:03:19.057 に答える