SQL用逗号替换点

时间:2013-08-15 11:01:18

标签: sql sql-server tsql

我有以下代码:

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的转换。我该如何解决这个问题?

5 个答案:

答案 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'