You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite去除nvarchar列末尾.0小数位问题求助

解决SQLite中去除nvarchar列末尾.0的问题

嘿,我明白你遇到的麻烦了——用CAST转int报错,是因为你的列是字符串类型,可能存在没法直接转成整数的内容,或者转换过程中触发了SQLite的类型转换限制。不过没关系,咱们换个思路,直接从字符串层面处理,精准去掉末尾的.0,完全不用碰数值转换,这样就不会报错啦!

下面给你两个实用的方法:

方法一:条件判断+字符串截取(兼容性最好)

这个方法不需要依赖正则,所有SQLite版本都支持,而且能精准只处理末尾是.0的字符串,不会影响其他带小数的内容(比如123.45会保持原样):

SELECT 
  CASE 
    WHEN your_column LIKE '%.0' THEN SUBSTR(your_column, 1, LENGTH(your_column) - 2)
    ELSE your_column 
  END AS cleaned_column
FROM data;

原理很简单:先检查字符串是不是以.0结尾,如果是,就截取掉最后两个字符(也就是.0);如果不是,就返回原字符串。

方法二:正则表达式替换(更简洁)

如果你的SQLite环境支持正则表达式(Aqua Data Studio通常会启用这个功能),可以用REGEXP_REPLACE一步到位:

SELECT REGEXP_REPLACE(your_column, '\.0$', '') AS cleaned_column FROM data;

这里的正则\.0$专门匹配字符串末尾的.0,把它替换成空字符串,效果和方法一完全一样,但代码更短。

如果要更新表中的数据

要是你想直接把表中的数据改成清理后的样子,而不是只查询结果,可以用下面的UPDATE语句:

UPDATE data
SET your_column = CASE 
                   WHEN your_column LIKE '%.0' THEN SUBSTR(your_column, 1, LENGTH(your_column) - 2)
                   ELSE your_column 
                 END
WHERE your_column LIKE '%.0';

加个WHERE条件能只修改需要处理的行,提升效率。

为什么之前的CAST会报错?大概率是因为你的nvarchar列里,有些值看起来像数字,但实际可能包含空格、特殊字符,或者存在隐形格式问题。用字符串处理的方法就完全避开了这些问题,只针对末尾的.0动手。

内容的提问来源于stack exchange,提问作者J.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:04:26