You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python中SQLite3的LEFT函数无法使用问题求助

问题原因与解决方案

你碰到的这个语法错误很明确——SQLite并不支持LEFT()这个字符串函数。虽然LEFT()在MySQL、SQL Server这类数据库里很常用,但SQLite有自己的字符串截取规则,得用它专属的函数来实现同样的功能。

正确的实现方式

在SQLite中,要获取字符串的前N个字符,你需要使用SUBSTR()函数,它的语法是:

SUBSTR(目标字段, 起始位置, 截取长度)

注意:SQLite里字符串的起始索引是1,不是0哦。所以要取title字段的前2个字符,对应的查询语句应该改成:

SELECT SUBSTR(title, 1, 2) FROM books

修正后的完整代码

把你的代码里的查询部分替换后,完整代码如下:

import sqlite3
from datetime import datetime
conn = sqlite3.connect('database.db')
conn.execute("""CREATE TABLE IF NOT EXISTS books (
    title TEXT,
    author TEXT,
    pages INTEGER,
    published INTEGER
)""")
values = ('Deep Learning', 'Ian Goodfellow et al.', 775, datetime(2016, 11, 18).timestamp())
conn.execute("""INSERT INTO books VALUES (?, ?, ?, ?)""", values)
# 这里替换成SUBSTR函数
r = conn.execute("SELECT SUBSTR(title, 1, 2) FROM books")
print(r.fetchall())  # 会输出 [('De',)]

额外小技巧

如果之后你需要从字符串末尾截取字符(类似其他数据库的RIGHT()函数),也可以用SUBSTR(),只需要把起始位置设为负数就行,比如取title的最后3个字符:

SELECT SUBSTR(title, -3) FROM books

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

火山引擎 最新活动