sql-server - 在 varchar 数据类型上替换 .0

标签 sql-server tsql sql-update sql-like

我有一个带有 .0 数字的 varchar 列

这一列既有数值数据也有非数值数据。

我首先尝试将数据类型转换为整数,但由于存在非数字数据类型,所以它不会让我。

如何删除 .0(从所有带有 .0 的数字中删除)?

所以,例如,100.0 应该是 100

我没有尝试使用 select、cast 或 truncate,因为我需要实际修改现有数据。

谢谢。

enter image description here

最佳答案

由于该列同时包含数字和非数字数据,因此仅检查它是否以 '.0' 结尾是不够的。
您还应该检查它是否是一个数值,这可以通过 TRY_CAST() 来完成。 :

UPDATE tablename
SET col = LEFT(col, LEN(col) - 2)
WHERE col LIKE '%.0' AND TRY_CAST(col AS FLOAT) IS NOT NULL

参见 demo .

关于sql-server - 在 varchar 数据类型上替换 .0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68459955/

相关文章:

sql - 检查行是否存在,否则插入

sql - SQL Server 中动态数据透视表和静态数据透视表的组合

MySQL - 如何更新小数列以允许更多位数?

sql-server - SQL Server 脚本语法错误和 "must declare the scalar value"

sql - 计算不同记录的窗口函数

php - 更新配置文件 php

postgresql - 使用函数更新 PostgreSQL 表中的数组

sql-server - 我应该使用 int32 还是 int64 作为 SQL Server 数据库中的主键?

sql-server - 如何创建基于 2 列的 SQL 唯一约束?

sql - 如何创建一个列来显示另一列中的值出现的次数而不合并 SQL Server 中的行