日期:2014-05-17  浏览次数:20677 次

求救,sql语句从一个字段中选取部分插入数据库中另一个字段中
id   tel          mobie(该列为空)
1    1234,5678 
2     3455,6666
3     
4     1234
数据库中字段是这样的。要求是把tel字段中的数据比如1234,5678,提取5678插入列mobile
最后的形式是:
id   tel    mobile
1    1234   5678

麻烦各位了,这个sql语句该怎么写

------解决方案--------------------
1)判断是否有逗号分隔
2)然后用substring+charindex截取过去
------解决方案--------------------
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-03-14 11:53:33
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
-- Jun 17 2011 00:54:03 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([id] int,[tel] varchar(9),[mobie] sql_variant)
insert [huang]
select 1,'1234,5678',null union all
select 2,'3455,6666',null
--------------开始查询--------------------------

select id,SUBSTRING(tel,1,PATINDEX('%,%',tel)-1)[tel], SUBSTRING(tel,PATINDEX('%,%',tel)+1,LEN(tel)+1-PATINDEX('%,%',tel))[mobie]
from [huang]
----------------结果----------------------------
/* 
id          tel       mobie
----------- --------- ---------
1           1234      5678
2           3455      6666

(2 行受影响)
*/

------解决方案--------------------
那不行,必须要有一个明确的分隔符,如果里面,/、* ‘’这些都有,你怎么去拆分啊
------解决方案--------------------
引用:
引用:
那不行,必须要有一个明确的分隔符,如果里面,/、* ‘’这些都有,你怎么去拆分啊
分隔符只有“,”,不过有可能没有分隔符,或者字段为空,就这三种情况
空格好处理,但是没有分隔符你怎么去判断啊?比如12165498,你究竟是想1216 5498呢?还是12 165498?还是1216549 8这样分呢?规则要说清楚啊
------解决方案--------------------
这个有那么难吗?
update 表名 set mobile = right(tel,4)
从右往左取4位,想取多少位就把4改成几