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

如何在SQLite中移除text类型num列的第一个小数点?

解决SQLite移除num列第一个小数点的问题

你的需求是把log表中num列(text类型)里的第一个小数点去掉、保留第二个。之前用REPLACE的方法会删掉所有小数点,原因是REPLACE是全局替换所有匹配字符,得换个思路——直接拆分字符串再拼接:

正确的SQL语句

SELECT 
  num, 
  SUBSTR(num, 1, INSTR(num, '.') - 1) || SUBSTR(num, INSTR(num, '.') + 1) AS cleaned_num
FROM log;

原理说明

  • INSTR(num, '.')返回第一个小数点在字符串中的位置(比如1.100.00里第一个小数点在第2位)
  • SUBSTR(num, 1, INSTR(num, '.') - 1)截取小数点前的部分(比如1)
  • SUBSTR(num, INSTR(num, '.') + 1)截取第一个小数点之后的所有内容(比如100.00)
  • 用||把两部分拼接,就得到去掉第一个小数点的结果(1100.00)

兼容无小数点的情况

如果表中存在没有小数点的行,上面的语句会报错,可以加判断处理:

SELECT 
  num, 
  CASE 
    WHEN INSTR(num, '.') > 0 THEN SUBSTR(num, 1, INSTR(num, '.') - 1) || SUBSTR(num, INSTR(num, '.') + 1)
    ELSE num
  END AS cleaned_num
FROM log;

内容的提问来源于stack exchange,提问作者IamBeginner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:09:55