4

我在下面有这张page表,我想从 的列中删除“ 999template_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 回答