Я согласен с Шоном и Шнуго, это поможет вам начать, но также подскажет, как легко он может потерпеть неудачу. Все, кроме типов проблем в данных примера, может вызвать проблемы.
declare @table table (ID int identity (1,1), c1 varchar(64))
insert into @table
values
('$1,000'), --good
('$1.000'), -- Bad, should have been $1,000
('$1,000.000'), -- Bad, should have been $1,000,000
('$1,000.000.00'), -- Bad, should have been $1,000,000.00
('$10,.000'), -- Bad, should have been $10,000
('500.000'), -- Bad, should have been 500,000
('1.325%'), -- Good!
('1,325%') -- bad!
select
*,
case
when c1 like '%\%%' escape '\' then replace(c1,',','.') --simply replaces commas with periods for % signed values
else
case --simply replaces periods for commans for non % signed values, and takes into account ,00 at the end should be .00
--also handles double commas, once
when left(right(replace(replace(c1,'.',','),',,',','),3),1) = ','
then stuff(replace(replace(c1,'.',','),',,',','),len(replace(replace(c1,'.',','),',,',',')) - 2,1,'.')
else replace(replace(c1,'.',','),',,',',')
end
end
from @table