我有一个带有zipcode列的MySQL数据库。一些邮政编码是五位数,有些是九位数。如果字段是九个字符,我需要在第五个和第六个字符之间插入一个连字符。
55555仍为55555
999999999成为99999-9999
我可以在用PHP回显时添加它们,但是如果我可以将连字符添加到数据库中的zipcode列中的数据,效率会更高。
我对如何解决这个问题感到茫然。任何有关MySQL查询帮助的建议都将不胜感激。
答案 0 :(得分:3)
如果您需要更新该值,可以使用此更新查询:
UPDATE yourtable
SET
zip = CONCAT_WS('-', SUBSTR(zip, 1, 5), SUBSTR(zip, 6))
WHERE
LENGTH(zip)=9
请参阅小提琴here。
答案 1 :(得分:0)
<?php
$result = mysqli_query($link, "SELECT zipcode, id FROM table");
while($row = mysqli_fetch_assoc($result) {
if(strlen($row['zipcode']) > 5) {
$first_part = substr($row['zipcode'],0,5);
$second_part = substr($row['zipcode'],5,9);
$zipcode = $first_part.'-'.$second_part;
$result2 = mysqli_query($link,"UPDATE table SET `zipcode` = $zipcode WHERE id = {$row['id']}");
}
}
这是一个简单的解决方案,在查询中调整表名,应该是它。