0

У меня есть таблица с колонкой в ​​процентах VARCHAR (10) Данные в этой таблицеSQL преобразования типов данных сервера

Pecentage 
2/10 
4/10 
6/10 
.............. 

Теперь я должен преобразовать выше процент в десятичную, так что теперь я делаю так. select CAST (в процентах как десятичный) from TabName Я получаю следующее исключение Ошибка преобразования типа данных varchar в числовой.

Я хотел бы получить результаты, как 0.2,0.4,0.6

ответ

6

Вы не можете конвертировать этот формат VARCHAR (2/10), чтобы плавать .Вы должны получить индивидуальные строка, а затем выполнить деление

Declare @Sample Table 
(Percentage varchar(10)) 

Insert into @Sample 
values 
('2/10'),('4/10'),('6/10') 

;With CTE (Numerator,denominator) 
as 
(
    Select cast(substring(Percentage,0,charindex('/',percentage))as float), 
    cast(substring(Percentage,charindex('/',percentage)+1,len(Percentage)) as float) 
    from @Sample 
) 
select Numerator/denominator from CTE 

Результат

(No column name) 
0.2 
0.4 
0.6 
1

Попробуйте

declare @str varchar(20)='2/10' 

select @str, CAST(LEFT(@str,CHARINDEX('/',@str)-1) as DECIMAL(10,5))/CAST(RIGHT(@str,LEN(@str)-CHARINDEX('/',@str)) as DECIMAL(10,5)) 
0
Declare @Temp Table 
(Percentage varchar(10)) 

Insert into @Temp 
values 
('2/10'),('4/10'),('6/10') 


select 
convert(float,SUBSTRING (Percentage ,0 , charindex('/',Percentage)))/  
convert(float,SUBSTRING (Percentage ,charindex('/',Percentage)+1,len(Percentage))) 
as Result 

from @Temp 
Смежные вопросы