Ok, чтобы заменить все нечисловые символы, смотрите на this.
Вот пример сценарий (копируется из этой ссылки), чтобы показать вам, как это работает (Вы должны изменить это, чтобы соответствовать своему имени и имена столбцов таблицы:
-- Step 1: creates table to use to hold every char in every phone number
if object_id('dbo.tally') is not null drop table dbo.tally
select top 10000 --change to fit max length of phone number
identity(int,1,1) as n
into dbo.tally
from master.dbo.syscolumns sc1,
master.dbo.syscolumns sc2
-- add pk to maximize performance
alter table dbo.tally
add constraint pk_tally_n
primary key clustered (n) with fillfactor = 100
-- Step 2: Create temporary table holding three bad phone numbers
declare @phonetable table
(uniqueid int identity(1,1),
phone_number varchar(500))
insert into @phonetable (phone_number)
select '-567-890' union
select 'ext' union
select 'n/a' union select '...12345.....';
-- Step 3: identify, for every character, whether it is a number or not,
and remove the non-numeric ones
with cte (uniqueid, phone_number, goodchar, badchar) as
(select uniqueid, phone_number,
case when substring(phone_number,N,1) not like '%[^0-9]%'
then substring(phone_number,N,1) end as goodchar,
case when substring(phone_number,N,1) like '%[^0-9]%'
then substring(phone_number,N,1) end as badchar
from @phonetable , Tally
where phone_number like '%[^0-9]%' and N <= len(phone_number))
select distinct phone_number,
isnull(stuff (
(SELECT '' + goodchar
FROM cte t1
where t1.UniqueID = t2.UniqueID
FOR XML PATH ('')) , 1 , 0 , '') ,'')
as clean_phone_number from cte t2
для отображения чисел с форматирование, просто извлечь соответствующие части и вновь объединить их с черточками.
Select case len(phone)
When 10 then left(phone, 3) + '-' +
substring(phone, 4,3) + '-' +
substring(phone, 7,4)`
When 7 then left(phone, 3) + '-' +
substring(phone, 4,4)
Else '' end
Чтобы создать вычисляемый столбец
Alter table Add Column FormattedPhone as
case len(phone)
When 10 then left(phone, 3) + '-' +
substring(phone, 4,3) + '-' +
substring(phone, 7,4)`
When 7 then left(phone, 3) + '-' +
substring(phone, 4,4)
Else '' end
сдирать все нечисловых символов из базы данных, и применить любой желаемое форматирование 1. в клиентском приложении; 2. в SQL, который выбирает данные из базы данных; или 3.создайте вычисленный столбец в таблице, который применит форматирование для вас «на лету» и «Выберите» этот столбец вместо значения неформатированного столбца –
Ну, я хочу это сделать. Но как? Любой запрос поможет много. –
Сначала вам нужно удалить все существующие символы форматирования. Наиболее вероятными символами являются() - и пробел. Мое предпочтение заключалось бы в том, чтобы оставить форматирование передним приложением и получить все символы форматирования и логику из базы данных. –