SQL Server 删除字符串中小数点后的尾随零

标签 sql sql-server

我有以下变量:

DECLARE @test nvarchar(100)
SET @test =  'Prodcut A (Average: 1.000)'
SET @test =  'Prodcut B (Average: 2.3500)'

我的输出应该是:产品 A(平均:1.0)、产品 B(平均:2.35)

如何从 SQL Server 中的 nvarchar 数据类型列中删除所有尾随零? 我确信我必须使用 SUBSTRING 和 CHARINDEX 但不知道如何使用。有人可以帮我吗?

我尝试过以下方法:

IF charindex('.', @test ) > 0 
   select  SUBSTRING(@test, PATINDEX('%[^0 ]%', @test+ ' '), LEN(@test))                    
End

最佳答案

您可以遍历字符串,查找最后一个非“0”字符的位置,但这很困惑。

警告您可能偶尔会遇到浮点错误,这将满足您的要求:

convert(varchar, convert(float, '123.40')) -- yields '123.4'
convert(varchar, convert(float, @test))

关于SQL Server 删除字符串中小数点后的尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924578/

相关文章:

sql - 选择具有最大时间戳的唯一条形码

javascript - Node js - 如何使用 require 传递参数

SQL 查询如果 X 但不是 Y,则返回表中的所有内容

SQL Server 触发器 - 执行顺序

mysql - 请解释 SQL 连接

sql - 如何在 SQL Server 中使用别名对多列进行分组?

jquery - 检索标签兄弟时进行标签搜索

c# - Dapper ORM - 插入具有现有 ID 的对象

mysql插入触发错误

MySQL 不会向同一张表添加多个外键