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

Php MySQL:从所有记录中删除数字前缀,php,mysql,sql,php-5.3,Php,Mysql,Sql,Php 5.3,我有下面的页面表格,我想从模板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

我有下面的
页面
表格,我想从
模板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 

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

如果您不想进行复杂的查询,或者如果需要进一步的操作,可以执行以下操作:

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");
   }
}

要获得问题中所示的数据:

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将处理其余部分。

是<代码>整数< /代码>。@ LusiiAkko:谢谢:考虑给予+1,并接受这是否帮助了你:)可以在MySQL中使用整数列上的字符串操作吗?我不确定。@dqhendricks:请看我答案中的链接:它们将自动转换为字符串(从5.5.3开始,在连接的字符集中,或者在此之前是
binary
;无论如何,我相信
SUBSTRING
RLIKE'^999'
都可以正常工作)。