MySQL:从所有记录中删除数字前缀

时间:2012-04-30 16:45:42

标签: php mysql sql php-5.3

我在下面有page表格,我想从template_id列中删除“ 999 ”的编号前缀,

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 

我知道如何删除这种前缀吗?

2 个答案:

答案 0 :(得分: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的implicit type conversion将处理其余的事情。

答案 1 :(得分: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");
   }
}