我有以下代码:
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执行从komma到dot的转换。我该如何解决这个问题?
答案 0 :(得分:17)
您的as Listenpreis
别名错误。它需要是最后一件事。也是'.','
部分。
SELECT REPLACE(CAST(Listenpreis*1.19 AS DECIMAL(29,2)) ,'.',',') AS Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
<强> SQLFiddle DEMO 强>
答案 1 :(得分:3)
你错过了逗号和撇号(你有'.','
而你需要'.',','
),请尝试:
SELECT
REPLACE(CAST(Listenpreis*1.19 as decimal(29,2)), '.', ',') as Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
答案 2 :(得分:3)
这应该有效:
select replace(cast(Listenpreis*1.19 as decimal(29,2)),'.',',') as Listenpreis
from [SL_M03KNE].[dbo].[ARKALK]
听起来好像你正在补偿文化背景,看看COLLATE
声明。
答案 3 :(得分:0)
我也在努力解决这个问题,对我来说,有效的功能是:
CAST(replace_this_with_number_or_column_you_want_to_convert)AS float)
这对你也有帮助吗?
答案 4 :(得分:0)
你可以尝试一下吗?
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'