SQLite near “(“: syntax error的原因及解决方法

在SQLite中尝试执行一段如下SQL报错:near "(": syntax error

select name,CASE 
WHEN LEFT(name,2)='美团' then '美团'  
WHEN LEFT(name,2)='京东' then '京东'  
WHEN LEFT(name,2)='淘宝' then '淘宝' 
WHEN LEFT(name,3)='拼多多' then '拼多多' 
WHEN LEFT(name,2)='超市' then '线下'  ELSE '其他' end  as platform from PayInfo_B

经核实,语法并没有问题,问题来自于Left是SQL Server的内部函数,SQLite并不支持Left,几番调试之后,发现 left 是 SQLite 的保留字(LEFT JOIN),left 的功能可以使用SQLite中的substr函数来代替。

select name,CASE 
WHEN SUBSTR(name,1,2)='美团' then '美团'  
WHEN SUBSTR(name,1,2)='京东' then '京东'  
WHEN SUBSTR(name,1,2)='淘宝' then '淘宝' 
WHEN SUBSTR(name,1,3)='拼多多' then '拼多多' 
WHEN SUBSTR(name,1,2)='超市' then '线下'  ELSE '其他' end  as platform from PayInfo_B

或者INSTR代替

select name,CASE 
WHEN INSTR(name,'美团')>0 then '美团'  
WHEN INSTR(name,'京东')>0 then '京东'  
WHEN INSTR(name,'淘宝')>0 then '淘宝' 
WHEN INSTR(name,'拼多多')>0 then '拼多多'
WHEN INSTR(name,'超市')>0 or INSTR(name,'购物')>0 then '线下'  ELSE '其他' end  as platform from PayInfo_B

确认SQLite中的语法基本=Oracle语法。比如SQL中可以通过Select * into xxx from xxx来建表和复制表结构或数据,但是Oracle和SQLite,mysql中都不行,需要使用Create table xxx as select xxx来完成相应的操作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值