在 varchar 数据类型上替换 .0
replace .0 on varchar data type
我有一个 varchar 列,其中的数字带有 .0
此列既有数值数据也有非数值数据。
我首先尝试将数据类型转换为整数,但由于存在非数字数据类型,所以它不会让我。
如何删除 .0(从所有带有 .0 的号码中删除)?
所以,例如,100.0 应该是 100
我没有尝试使用 select、cast 或 truncate,因为我需要实际修改现有数据。
谢谢。
假设您要更新 table...
- 其中 x = 您的 table 姓名
- yourfieldname = 您需要更新的字段名称。
.
UPDATE table X
SET yourfieldName = left(yourfieldname,len(yourieldName)-2)
WHERE right(yourfieldName,2)='.0')
-- or perhaps where yourfieldname like '%.0' would be faster...
应该:更新所有以 .0 结尾的字段需要测试以确定哪个 where 子句会更快,具体取决于索引。如果考虑速度。如果不;这是 1 并且完成了...这重要吗?
一定要在 subset/copy table!
上进行测试
假设您在 .0... 或任何非显示字符后没有空格。如果有,您需要 trim 关闭空格并替换非显示字符带有空字符串 ''
的字符
由于该列同时包含数字和非数字数据,仅检查它是否以 '.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。
另一种选择
例子
Declare @YourTable table (SomeCol varchar(50))
Insert Into @YourTable values
('100.0')
,('1001.0')
,('Not Numeric')
,('-200.05')
,('10,250.0')
Update @YourTable
set SomeCol = format(try_convert(money,SomeCol),'#.######')
From @YourTable
Where try_convert(money,SomeCol) is not null
更新后Table
SomeCol
100
1001
Not Numeric
-200.05
10250
我有一个 varchar 列,其中的数字带有 .0
此列既有数值数据也有非数值数据。
我首先尝试将数据类型转换为整数,但由于存在非数字数据类型,所以它不会让我。
如何删除 .0(从所有带有 .0 的号码中删除)?
所以,例如,100.0 应该是 100
我没有尝试使用 select、cast 或 truncate,因为我需要实际修改现有数据。
谢谢。
假设您要更新 table...
- 其中 x = 您的 table 姓名
- yourfieldname = 您需要更新的字段名称。
.
UPDATE table X
SET yourfieldName = left(yourfieldname,len(yourieldName)-2)
WHERE right(yourfieldName,2)='.0')
-- or perhaps where yourfieldname like '%.0' would be faster...
应该:更新所有以 .0 结尾的字段需要测试以确定哪个 where 子句会更快,具体取决于索引。如果考虑速度。如果不;这是 1 并且完成了...这重要吗?
一定要在 subset/copy table!
上进行测试假设您在 .0... 或任何非显示字符后没有空格。如果有,您需要 trim 关闭空格并替换非显示字符带有空字符串 ''
的字符由于该列同时包含数字和非数字数据,仅检查它是否以 '.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。
另一种选择
例子
Declare @YourTable table (SomeCol varchar(50))
Insert Into @YourTable values
('100.0')
,('1001.0')
,('Not Numeric')
,('-200.05')
,('10,250.0')
Update @YourTable
set SomeCol = format(try_convert(money,SomeCol),'#.######')
From @YourTable
Where try_convert(money,SomeCol) is not null
更新后Table
SomeCol
100
1001
Not Numeric
-200.05
10250