Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:如何将浮点数格式化为字符串,而不使用逗号?_Sql_Sql Server_String_Format_Sql Server 2017 - Fatal编程技术网

SQL Server:如何将浮点数格式化为字符串,而不使用逗号?

SQL Server:如何将浮点数格式化为字符串,而不使用逗号?,sql,sql-server,string,format,sql-server-2017,Sql,Sql Server,String,Format,Sql Server 2017,我目前使用的格式是'N99',这很好,只是它添加了逗号 有没有办法在格式中不指定逗号? 或者我必须使用替换来删除逗号吗?(速度较慢,但可以接受。) 编辑:我需要使用格式功能来满足我的要求 str函数还可以将浮点值转换为字符串,但不能确定它是否满足您的要求 STR(1000000000E0/46E0,len(STR(1000000000E0/46E0))+10,16) output=21739130.43478260900 替换功能可满足您的需求 select replace(forma

我目前使用的格式是
'N99'
,这很好,只是它添加了逗号

有没有办法在格式中不指定逗号?
或者我必须使用
替换
来删除逗号吗?(速度较慢,但可以接受。)

编辑:我需要使用
格式
功能来满足我的要求


str
函数还可以将浮点值转换为字符串,但不能确定它是否满足您的要求

 STR(1000000000E0/46E0,len(STR(1000000000E0/46E0))+10,16)

 output=21739130.43478260900
替换功能可满足您的需求

select  replace(format(1000000000E0/46E0,N'N99'), ',', '')
输出

21739130.434782600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

str
函数还可以将浮点值转换为字符串,但不能确定它是否满足您的要求

 STR(1000000000E0/46E0,len(STR(1000000000E0/46E0))+10,16)

 output=21739130.43478260900
替换功能可满足您的需求

select  replace(format(1000000000E0/46E0,N'N99'), ',', '')
输出

21739130.434782600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

您想对该格式使用
Format
函数

可以这样做:

declare @num as float
set @num=21739130.43478260

select format(@num, N'#.##############################');
-- output : 21739130.4347826
有很多方法可以做到这一点:

转换功能:

SELECT CONVERT(varchar(100), Cast(@num as decimal(38, 2)))
--output : 21739130.43

SELECT CONVERT (VARCHAR(50), @num,128)
--output : 21739130.4347826090000000
SELECT LTRIM(STR(@num, 25, 99))
--output : 2.1739130434782609e+007
字符串函数:

SELECT CONVERT(varchar(100), Cast(@num as decimal(38, 2)))
--output : 21739130.43

SELECT CONVERT (VARCHAR(50), @num,128)
--output : 21739130.4347826090000000
SELECT LTRIM(STR(@num, 25, 99))
--output : 2.1739130434782609e+007

您想对该格式使用
Format
函数

可以这样做:

declare @num as float
set @num=21739130.43478260

select format(@num, N'#.##############################');
-- output : 21739130.4347826
有很多方法可以做到这一点:

转换功能:

SELECT CONVERT(varchar(100), Cast(@num as decimal(38, 2)))
--output : 21739130.43

SELECT CONVERT (VARCHAR(50), @num,128)
--output : 21739130.4347826090000000
SELECT LTRIM(STR(@num, 25, 99))
--output : 2.1739130434782609e+007
字符串函数:

SELECT CONVERT(varchar(100), Cast(@num as decimal(38, 2)))
--output : 21739130.43

SELECT CONVERT (VARCHAR(50), @num,128)
--output : 21739130.4347826090000000
SELECT LTRIM(STR(@num, 25, 99))
--output : 2.1739130434782609e+007

什么是
N99
格式?@saAction它似乎在小数点的右侧提供99位数字,而不管小数点的左侧有多少位。我只知道这些。当我开始使用非常小的数字时,它需要大量的十进制数字。什么是
N99
格式?@saAction它似乎在小数点的右侧提供99个数字,而不管小数点的左侧有多少个数字。我只知道这些。当我开始使用非常小的数字时,这很重要,需要很多十进制数字。谢谢。它确实去掉了逗号。不幸的是,它不能满足我的其他要求。但这是对这个问题的一个很好的回答,可能会帮助其他有同样问题的人。谢谢。它确实去掉了逗号。不幸的是,它不能满足我的其他要求。但是这是对这个问题的一个很好的回答,并且可能会帮助其他人解决同样的问题。
格式(@num,N'.\35;#####)
非常有效!它甚至删除了尾随的零,这甚至更好。(当然我最后会用很多,但那很好。)谢谢<代码>格式(@num,N'!它甚至删除了尾随的零,这甚至更好。(当然我最后会用很多,但那很好。)谢谢!