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

SQLite中near ''~''语法错误修复:更新非数值字段为NULL

解决SQLite中UPDATE语句的语法与正则匹配问题

问题分析

你遇到的错误来自两方面:

  1. 原SQL存在语法错误:UPDATE后表名多了逗号,SET语句末尾也多了逗号,这会直接触发语法报错。
  2. SQLite不支持~作为正则匹配运算符(该运算符属于PostgreSQL语法),需要改用SQLite原生支持的判断方式。

修正后的解决方案

方案1:通过类型转换判断非数值(推荐)

利用SQLite的CAST函数尝试将列值转换为整数,若转换失败(结果为NULL)且原列值不为NULL,则判定为非数值并设为NULL:

UPDATE Employee_Performance
SET Employee_Satisfaction_Score = NULL
WHERE CAST(Employee_Satisfaction_Score AS INTEGER) IS NULL
  AND Employee_Satisfaction_Score IS NOT NULL;

方案2:使用SQLite的GLOB通配符匹配纯数字

SQLite的GLOB支持类正则的通配符,可精准匹配纯正整数(和你原正则^[0-9]+$逻辑完全一致):

UPDATE Employee_Performance
SET Employee_Satisfaction_Score = NULL
WHERE NOT (Employee_Satisfaction_Score GLOB '[0-9]*' AND Employee_Satisfaction_Score NOT GLOB '*[^0-9]*');

基础语法修正(仅解决逗号问题)

如果仅修正原SQL的语法错误(仍会因~运算符报错),代码应为:

UPDATE Employee_Performance
SET Employee_Satisfaction_Score = NULL
WHERE NOT (Employee_Satisfaction_Score ~ '^[0-9]+$');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:25:04