SQL Server: нужно добавить точку перед двумя последними символами - PullRequest
0 голосов
/ 30 июня 2019

У меня есть данные, извлеченные из плоского файла, и мне нужно добавить точку перед двумя последними символами.

Например

Исходная таблица:

Price   Discount      Coupon 
-----------------------------
30000    3000         5060  
12500    2050            0  
 5900     590            0  
59000    5900         1000  
 7030       0            0  
37100    5020            0  
21800       0         5060  
 3000    1020            0  

Преобразованная таблица:

Price    Discount      Coupon 
-------------------------------
300.00     30.00       50.60  
125.00     20.50        0  
 59.00      5.90        0  
590.00     59.00       10.00  
 70.30      0           0  
371.00     50.20        0  
218.00      0          50.60  
 30.00     10.20        0  

Я попытался выполнить следующий запрос в SQL Server:

SELECT 
    (LEFT([Price], LEN([Price]) - 2)) + '.' + RIGHT(RTRIM([price]), 2) 
FROM 
    dbo.Rawdata

Но он работает только с первым столбцом

Msg537, уровень 16, состояние 2, строка 4
Недопустимый параметр длины, переданный в функцию LEFT или SUBSTRING.

Большое спасибо.,.

1 Ответ

1 голос
/ 30 июня 2019

попробуйте добавить чек на 0

SELECT case when Coupon <> '0' 
     then  (LEFT([Price],LEN([Price] )-2) ) +'.'+RIGHT(RTRIM([price]),2 )  
     else 0 end 
    FROM dbo.Rawdata

или

SELECT (LEFT([Price],LEN([Price] )-2) )+'.'+RIGHT(RTRIM([price]),2 ) 
FROM dbo.Rawdata
where Coupon <> '0' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...