是否可以根据存储在另一个字段中的数据填充字段?我更好地解释了一下:在数据库中有一个字段“telnum”(电话号码),其中存储了带有国际前缀的telepnone号码。我可以使用php命令在每个数字的前缀函数中填充“country”字段吗?
这是数据库:
______________________________________________
| id | telnum | name | country |
----------------------------------------------
| 01 | 003912377 | Smith | |
| 02 | 004412345 | White | |
| 03 | 005454321 | Lopez | |
“php命令”应该与我的sql表中的国家名称的每个不同前缀相关联。在示例中,我们有0039 - >意大利,0044 - >英国,0054 - >阿根廷......等等。 结果必须是:
______________________________________________
| id | telnum | name | country |
----------------------------------------------
| 01 | 003912377 | Smith | Italy |
| 02 | 004412345 | White | UK |
| 03 | 005454321 | Lopez | Argentina |
提前感谢大家的帮助。 问候,Mattew
答案 0 :(得分:1)
您可以在查询中使用case
语句
update table
set country =
case
when left(telnum,4) = 0039 then 'Italy'
when left(telnum,4) = 0044 then 'UK'
when left(telnum,4) = 0054 then 'Argentina'
else ''
end
答案 1 :(得分:0)
YES,
如果您已有国家/地区代码映射
(这意味着另一个带有country_code + country_name的表),
你可以执行INNER JOIN,如: -
select u.id, u.telnum, u.name, c.country_name
from user as u
inner join country c
on left(u.telnum, 4) = c.country_code
...;
否则,您可以将映射放入PHP配置文件中 格式如
$country_code = array();
$country_code['0039'] = ...;
然后当你从mysql迭代结果时,
你可以做相应的映射
答案 2 :(得分:0)
mySQL查询方式:
UPDATE telcountry_table
SET country =
CASE
WHEN left(telnum,4) = 0093 THEN 'Afghanistan'
WHEN left(telnum,5) = 00355 THEN 'Albania'
WHEN left(telnum,5) = 00213 THEN 'Algeria'
.
.
.
ELSE ''
END
完整版查询:https://gist.github.com/1395484#file_mysql_phoneprefix_to_zone_field.sql
php方式:
$call_code = array();
$call_code['93']='Afghanistan';
$call_code['355']='Albania';
$call_code['213']='Algeria';
.
.
.
$func = function($value) {
$code2=substr($value['telnum'],2,2);
$code3=substr($value['telnum'],2,3);
$code4=substr($value['telnum'],2,4);
if(array_key_exists($code2,$call_code))
$value['country']=$call_code[$code2];
else if(array_key_exists($code3,$call_code))
$value['country']=$call_code[$code3];
else if(array_key_exists($code4,$call_code))
$value['country']=$call_code[$code4];
return $value;
};
$countries=array_map($func,$data);
完整版脚本:https://gist.github.com/1395484#file_php_phoneprefix_to_zone_field.php