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'
都可以正常工作)。