"(" 付近の SQLite: 構文エラーの原因と解決策

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 ではできません。対応する操作。

おすすめ

転載: blog.csdn.net/wh445306/article/details/130201660