Ответ 1
Ваше сглаживание as Listenpreis
не в том месте. Это должно быть последнее. Также часть '.','
.
SELECT REPLACE(CAST(Listenpreis*1.19 AS DECIMAL(29,2)) ,'.',',') AS Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
У меня есть следующий код:
SELECT cast(Listenpreis*1.19 as decimal(29,2)) as Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
Я получаю это значение: 5.59
Я пытаюсь заменить точку на komma, поэтому я получаю значение: 5,59
Я пробую код:
SELECT replace((cast(Listenpreis*1.19 as decimal(29,2)) as Listenpreis),'.','))
FROM [SL_M03KNE].[dbo].[ARKALK]
Но что-то не так с Синтаксисом. Любые идеи?
Я узнал: если я делаю
select Artikelnummer,Listenpreis*1.19 as money from [SL_M03KNE].[dbo].[ARKALK]
я получаю: 5,59
Если я делаю
EXEC master..xp_cmdshell 'bcp "select Artikelnummer,Listenpreis*1.19 as money from [SL_M03KNE].[dbo].[ARKALK]" queryout "D:\shop\xml\Artikelpreise_ohne.csv" -E -c -T -x
bcp делает преобразование из коммы в точку. Как я могу это исправить?
Ваше сглаживание as Listenpreis
не в том месте. Это должно быть последнее. Также часть '.','
.
SELECT REPLACE(CAST(Listenpreis*1.19 AS DECIMAL(29,2)) ,'.',',') AS Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
Вам не хватает запятой и апострофа (у вас есть '.','
и вам нужно '.',','
), попробуйте:
SELECT
REPLACE(CAST(Listenpreis*1.19 as decimal(29,2)), '.', ',') as Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
Это должно работать:
select replace(cast(Listenpreis*1.19 as decimal(29,2)),'.',',') as Listenpreis
from [SL_M03KNE].[dbo].[ARKALK]
Похоже, вы компенсируете культурные настройки, посмотрите на инструкцию COLLATE
.
Я тоже боролся с этой проблемой и со мной, fuction, который работает:
CAST (replace_this_with_number_or_column_you_want_to_convert) AS float)
Это тоже полезно для вас?
Не могли бы вы попробовать?
EXEC master..xp_cmdshell 'bcp "select Artikelnummer, REPLACE(CAST( Listenpreis*1.19 AS VARCHAR),''.'','','') as money from [SL_M03KNE].[dbo].[ARKALK]" queryout "D:\shop\xml\Artikelpreise_ohne.csv" -E -c -T -x'