在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来完成相应的操作.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/139875.html