Sql 将“$”置于flot值之前时,在十进制值之后返回失败
我正在寻找快速解决方案,但我可以按照建议的方式更改逻辑:Sql 将“$”置于flot值之前时,在十进制值之后返回失败,sql,sql-server-2012,concatenation,Sql,Sql Server 2012,Concatenation,我正在寻找快速解决方案,但我可以按照建议的方式更改逻辑: CREATE TABLE #tmpTable(id INT, exposure FLOAT) INSERT INTO #tmpTable SELECT 1, 171325.69 SELECT '$ '+cast(exposure AS VARCHAR) Exposure FROM #tmpTable --OR-- SELECT concat('$ ',exposure) Exposure FROM #tmpTable DROP TA
CREATE TABLE #tmpTable(id INT, exposure FLOAT)
INSERT INTO #tmpTable
SELECT 1, 171325.69
SELECT '$ '+cast(exposure AS VARCHAR) Exposure FROM #tmpTable
--OR--
SELECT concat('$ ',exposure) Exposure FROM #tmpTable
DROP TABLE #tmpTable
--Output
Exposure
$ 171326
--Desired
$ 171326.69
我认为,这种方式不是绝对的,所以,请帮助我解决这个问题。这应该可以:
SELECT '$' + CONVERT(VARCHAR, CONVERT(DECIMAL(8,2), exposure))
FROM #tmpTable
这应该起作用:
SELECT '$' + CONVERT(VARCHAR, CONVERT(DECIMAL(8,2), exposure))
FROM #tmpTable
将表设置为数字将解决您的问题,并使用这两种方法返回预期结果
将表设置为数字将解决您的问题,并使用这两种方法返回预期结果。然后使用将列暴露的数据类型更改为十进制
cREATE TABLE #tmpTable(id INT, exposure DECIMAL(8,2))
INSERT INTO #tmpTable
SELECT 1, 171325.69
select * from #tmpTable
SELECT '$ '+cast(exposure AS VARCHAR) Exposure FROM #tmpTable
--OR--
SELECT concat('$ ',exposure) Exposure FROM #tmpTable
如果不想将数据类型更改为十进制,则使用以下查询:
SELECT '$' + CONVERT(VARCHAR, CONVERT(DECIMAL(8,2), exposure))
FROM #tmpTable
使用将列暴露的数据类型更改为decimal然后
cREATE TABLE #tmpTable(id INT, exposure DECIMAL(8,2))
INSERT INTO #tmpTable
SELECT 1, 171325.69
select * from #tmpTable
SELECT '$ '+cast(exposure AS VARCHAR) Exposure FROM #tmpTable
--OR--
SELECT concat('$ ',exposure) Exposure FROM #tmpTable
如果不想将数据类型更改为十进制,则使用以下查询:
SELECT '$' + CONVERT(VARCHAR, CONVERT(DECIMAL(8,2), exposure))
FROM #tmpTable
从tmpTable选择concat“$”有什么问题?您可能需要一个cast选择concat“$”有什么问题,从tmpTable曝光?您可能需要一个解决方案非常感谢,它运行良好,因此被称为从根本上解决:非常感谢,它运行良好,因此被称为从根本上解决:这正是我从Tim&Jens的上述答案中得到的,无论如何,感谢您的努力。这正是我从Tim&Jens的上述答案中得到的,谢谢你的努力。