日期:2014-05-18  浏览次数:20572 次

请问怎样用把一列数据以“,”分割拆分成两列?
现有表     "M_users "         想把其中的     "M_Users_livecity "列以“,”分风格存放成两列,如:    
M_Users_livecity            
广东,广州            
湖北,宜昌            
安徽,铜县            
浙江,杭州            
黑龙江,沿边地区    
......    
 
希望存成province与city两列:            
province                                             city            
广东                                                     广州            
湖北                                                     宜昌            
安徽                                                     铜县            
浙江                                                     杭州            
黑龙江                                                 沿边地区    
......  

注:我用的是ACCESS数据库。

------解决方案--------------------
create table M_users
(M_Users_livecity varchar(50))
insert into M_users
select '广东,广州 '
union all
select '湖北,宜昌 '
union all
select '安徽,铜县 '
union all
select '浙江,杭州 '
union all
select '黑龙江,沿边地区 '


select
substring(M_Users_livecity,1,charindex( ', ',M_Users_livecity)-1) as province,
substring(M_Users_livecity,charindex( ', ',M_Users_livecity)+1,len(M_Users_livecity)) as city
from M_users

结果:
-------------
广东 广州
湖北 宜昌
安徽 铜县
浙江 杭州
黑龙江 沿边地区

------解决方案--------------------
o?
我也不知道access里面是否有substring
那么用left 和 right试试看呢?


select
left(M_Users_livecity,charindex( ', ',M_Users_livecity)-1) as province,
right(M_Users_livecity,(len(M_Users_livecity)-charindex( ', ',M_Users_livecity))) as city
from M_users
------解决方案--------------------
access不能直接用SQL来完成,建议用MSSQL来操作,可以用以下命令完成(首先创建好province与city字段):

update M_users set province=substring(M_Users_livecity,0,charindex( ', ',M_Users_livecity)-1)
update M_users set city=rtrim(substring(M_Users_livecity,charindex( ', ',M_Users_livecity)+1,100))