13

我有以下代码:

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

4

5 回答 5

17

你的as Listenpreis别名在错误的地方。它必须是最后一件事。也是 '.','部分。

SELECT REPLACE(CAST(Listenpreis*1.19 AS DECIMAL(29,2)) ,'.',',')  AS Listenpreis
 FROM [SL_M03KNE].[dbo].[ARKALK]

SQLFiddle 演示

于 2013-08-15T12:29:27.777 回答
4

这应该有效:

select replace(cast(Listenpreis*1.19 as decimal(29,2)),'.',',') as Listenpreis
 from [SL_M03KNE].[dbo].[ARKALK]

听起来您确实在补偿文化环境,请看一下COLLATE声明。

于 2013-08-15T11:04:41.387 回答
3

您缺少逗号和撇号(您有'.','并且需要'.',','),请尝试:

SELECT 
    REPLACE(CAST(Listenpreis*1.19 as decimal(29,2)), '.', ',')  as Listenpreis
FROM [SL_M03KNE].[dbo].[ARKALK]
于 2013-08-15T11:03:46.893 回答
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'
于 2017-09-12T12:41:09.627 回答
0

我也在这个问题上苦苦挣扎,对我来说,有效的功能是:

CAST(replace_this_with_number_or_column_you_want_to_convert)作为浮动)

这对你也有帮助吗?

于 2017-09-12T12:09:43.917 回答