Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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中修剪尾部0_Sql_Sql Server - Fatal编程技术网

如何在SQL Server中修剪尾部0

如何在SQL Server中修剪尾部0,sql,sql-server,Sql,Sql Server,我需要从0.50、0.40等数字中删除尾随的“0”。有什么建议吗?无法在SQL Server中使用TRIM函数 我不想使用convert(十进制(10,1),number),因为这会影响诸如“0.23”之类的值。这里有一种通用方法,它应该删除任何数字的所有尾随零。首先,我们使用REVERSE(),REPLACE(),和CHARINDEX(),将数字转换为文本,并计算后面有多少个零。然后,我们使用LEFT()获取整个数字文本减去找到的尾随零的数量 SELECT LEFT(CAST(col AS V

我需要从0.50、0.40等数字中删除尾随的“0”。有什么建议吗?无法在SQL Server中使用
TRIM
函数


我不想使用
convert(十进制(10,1),number)
,因为这会影响诸如“0.23”之类的值。这里有一种通用方法,它应该删除任何数字的所有尾随零。首先,我们使用
REVERSE()
REPLACE()
,和
CHARINDEX()
,将数字转换为文本,并计算后面有多少个零。然后,我们使用
LEFT()
获取整个数字文本减去找到的尾随零的数量

SELECT LEFT(CAST(col AS VARCHAR),
            LEN(CAST(col AS VARCHAR)) -
            CHARINDEX(LEFT(REPLACE(REVERSE(CAST(col AS VARCHAR)), '0', ''), 1),
                      REVERSE(CAST(col AS VARCHAR))) +
            CHARINDEX(LEFT(REPLACE(REVERSE(CAST(col AS VARCHAR)), '0', ''), 1),
                      REPLACE(REVERSE(CAST(col AS VARCHAR)), '0', ''))) AS new_col
FROM yourTable
此处演示:


这里有一种通用方法,可以从任何数字中删除所有尾随的零。首先,我们使用
REVERSE()
REPLACE()
,和
CHARINDEX()
,将数字转换为文本,并计算后面有多少个零。然后,我们使用
LEFT()
获取整个数字文本减去找到的尾随零的数量

SELECT LEFT(CAST(col AS VARCHAR),
            LEN(CAST(col AS VARCHAR)) -
            CHARINDEX(LEFT(REPLACE(REVERSE(CAST(col AS VARCHAR)), '0', ''), 1),
                      REVERSE(CAST(col AS VARCHAR))) +
            CHARINDEX(LEFT(REPLACE(REVERSE(CAST(col AS VARCHAR)), '0', ''), 1),
                      REPLACE(REVERSE(CAST(col AS VARCHAR)), '0', ''))) AS new_col
FROM yourTable
此处演示:


您可以尝试以下脚本:


从table\U name中选择convert(双精度,列名称)

您可以尝试以下脚本:


从table\u name中选择convert(双精度,列名)

这是通常在表示层中处理的事情。我在下面尝试了一个答案,它涵盖了您当前的问题。这通常是在您的演示层中处理的。我试图回答下面的问题,其中包括您的直接问题。