--> 测试时间:2009-07-10 00:06:05
--> 我的淘宝: http://shop36766744.taobao.com/if object_id('[tab]') is not null drop table [tab]
create table [tab]([value] varchar(12))
insert [tab]
select '513-241-9517' union all
select '7344289988'
select '('+left(replace(value,'-',''),3)+')'+substring(replace(value,'-',''),3,3)+'-'+right(replace(value,'-',''),4) from tab
/*
-----------------------
(513)324-9517
(734)442-9988(所影响的行数为 2 行)*/
--> 我的淘宝: http://shop36766744.taobao.com/if object_id('[tab]') is not null drop table [tab]
create table [tab]([value] varchar(12))
insert [tab]
select '513-241-9517' union all
select '7344289988'
select '('+left(replace(value,'-',''),3)+')'+substring(replace(value,'-',''),3,3)+'-'+right(replace(value,'-',''),4) from tab
/*
-----------------------
(513)324-9517
(734)442-9988(所影响的行数为 2 行)*/
--> 我的淘宝: http://shop36766744.taobao.com/if object_id('[tab]') is not null drop table [tab]
create table [tab]([value] varchar(40))
insert [tab]
select '513-241-9517' union all
select '7344289988' union all
select '(734) 930-0009'
select case when charindex('(',value)>0 then value else
'('+left(replace(value,'-',''),3)+') '+substring(replace(value,'-',''),3,3)+'-'+right(replace(value,'-',''),4) end from tab/*
----------------------------------------
(513) 324-9517
(734) 442-9988
(734) 930-0009(所影响的行数为 3 行)*/
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb(col varchar(20))
go
insert into tb
select '513-241-9517' union all
select '7344289988' union all
select '(734) 930-0009'
go
select case when CHARINDEX(')',col)>0 then COL
else '('+left(replace(col,'-',''),3)+') '+SUBSTRING(replace(col,'-',''),4,3)+'-'+right(COL,4) end as col from tb
/*------------
(513) 241-9517
(734) 428-9988
(734) 930-0009
-------*/
---------------------------------
-- Author: htl258(Tony)
-- Date : 2009-07-10 08:23:30
---------------------------------
--> 生成测试数据表:tbIf not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([member_id] int,[home_phone] nvarchar(14),[HOME_CELL_PHONE] nvarchar(14),[home_fax] nvarchar(12),[busi_phone] nvarchar(12),[busi_fax] nvarchar(12))
Insert tb
Select 1,'(734) 930-0009','7347183755','7349309005','7349300009','7349309005' union all
Select 21,null,'7344289988',null,null,'7344289988' union all
Select 24,null,'7349303832',null,null,'7346682448' union all
Select 32,'(225) 291-1499','225-963-1499','225-272-3335',null,null union all
Select 33,'3056950170','7342764001',null,'3056950170','2397903700' union all
Select 34,'(661) 822-8883','661-822-8887','661-825-8227',null,null union all
Select 36,'908-647-8485','908-209-9094','','908-350-3112','313-557-4106' union all
Select 49,null,'(612) 250-9293',null,null,null union all
Select 50,null,null,null,null,null union all
Select 51,'513-574-5854','513-284-4187','513-241-9517',null,null
Go
--Select * from tb-->SQL查询如下:
If not object_id('[getstr]') is null
Drop function [getstr]
Go
create function getstr(@s nvarchar(20))
returns nvarchar(20)
as
begin
set @s=replace(replace(replace(replace(@s,'(',''),')',''),'-',''),' ','')
return(select '('+left(@s,3)+')'+substring(@s,4,3)+'-'+right(@s,4))
end
goselect [member_id],
dbo.[getstr]([home_phone]) [home_phone] ,
dbo.[getstr]([HOME_CELL_PHONE]) [HOME_CELL_PHONE],
dbo.[getstr]([home_fax]) [home_fax],
dbo.[getstr]([busi_phone]) [busi_phone],
dbo.[getstr]([busi_fax]) [busi_fax]
from tb/*
member_id home_phone HOME_CELL_PHONE home_fax busi_phone busi_fax
----------- -------------------- -------------------- -------------------- -------------------- --------------------
1 (734)930-0009 (734)718-3755 (734)930-9005 (734)930-0009 (734)930-9005
21 NULL (734)428-9988 NULL NULL (734)428-9988
24 NULL (734)930-3832 NULL NULL (734)668-2448
32 (225)291-1499 (225)963-1499 (225)272-3335 NULL NULL
33 (305)695-0170 (734)276-4001 NULL (305)695-0170 (239)790-3700
34 (661)822-8883 (661)822-8887 (661)825-8227 NULL NULL
36 (908)647-8485 (908)209-9094 ()- (908)350-3112 (313)557-4106
49 NULL (612)250-9293 NULL NULL NULL
50 NULL NULL NULL NULL NULL
51 (513)574-5854 (513)284-4187 (513)241-9517 NULL NULL(10 行受影响)
*/
---------------------------------
-- Author: htl258(Tony)
-- Date : 2009-07-10 08:23:30
---------------------------------
--> 生成测试数据表:tbIf not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([member_id] int,[home_phone] nvarchar(14),[HOME_CELL_PHONE] nvarchar(14),[home_fax] nvarchar(12),[busi_phone] nvarchar(12),[busi_fax] nvarchar(12))
Insert tb
Select 1,'(734) 930-0009','7347183755','7349309005','7349300009','7349309005' union all
Select 21,'','7344289988',null,null,'7344289988' union all
Select 24,null,'7349303832',null,null,'7346682448' union all
Select 32,'(225) 291-1499','225-963-1499','225-272-3335',null,null union all
Select 33,'3056950170','7342764001',null,'3056950170','2397903700' union all
Select 34,'(661) 822-8883','661-822-8887','661-825-8227',null,null union all
Select 36,'908-647-8485','908-209-9094','','908-350-3112','313-557-4106' union all
Select 49,null,'(612) 250-9293',null,null,null union all
Select 50,null,null,null,null,null union all
Select 51,'513-574-5854','513-284-4187','513-241-9517',null,null
Go
--Select * from tb-->SQL查询如下:
If not object_id('[getstr]') is null
Drop function [getstr]
Go
create function getstr(@s nvarchar(20))
returns nvarchar(20)
as
begin
if @s='' set @s=null else set @s=replace(replace(replace(replace(@s,'(',''),')',''),'-',''),' ','')
return(select '('+left(@s,3)+')'+substring(@s,4,3)+'-'+right(@s,4))
end
goselect [member_id],
dbo.[getstr]([home_phone]) [home_phone] ,
dbo.[getstr]([HOME_CELL_PHONE]) [HOME_CELL_PHONE],
dbo.[getstr]([home_fax]) [home_fax],
dbo.[getstr]([busi_phone]) [busi_phone],
dbo.[getstr]([busi_fax]) [busi_fax]
from tb/*
member_id home_phone HOME_CELL_PHONE home_fax busi_phone busi_fax
----------- -------------------- -------------------- -------------------- -------------------- --------------------
1 (734)930-0009 (734)718-3755 (734)930-9005 (734)930-0009 (734)930-9005
21 NULL (734)428-9988 NULL NULL (734)428-9988
24 NULL (734)930-3832 NULL NULL (734)668-2448
32 (225)291-1499 (225)963-1499 (225)272-3335 NULL NULL
33 (305)695-0170 (734)276-4001 NULL (305)695-0170 (239)790-3700
34 (661)822-8883 (661)822-8887 (661)825-8227 NULL NULL
36 (908)647-8485 (908)209-9094 NULL (908)350-3112 (313)557-4106
49 NULL (612)250-9293 NULL NULL NULL
50 NULL NULL NULL NULL NULL
51 (513)574-5854 (513)284-4187 (513)241-9517 NULL NULL(10 行受影响)
*/再改下,考虑空字节字符串.