我想检索结果集,其条件是'uid'的值大于'10000',并且它们都是vchar()类型;
结果是这样的:
答案 0 :(得分:1)
您需要将其转换为INT,如下所示:
SELECT * FROM IMMessageInfo
WHERE CAST(uid AS INT) > 10000
ORDER BY CAST(uid AS INT) DESC
答案 1 :(得分:1)
看起来你正在把它变成一个你无法将int与字符串进行比较的字符串。在Python中我跑了:
SELECT * FROM tab WHERE rowid > 9
尝试将其从文字(“”“)更改为int。
要将varchar(s)设置为int,您可以使用以下方法进行转换,以便您根本不更改表格:
CAST(uid AS INT)
您也可以(如@laalto所提到的)将两个字符串与> /<进行比较签署,所以为此我只相信你可以把数字作为一个字符串(但我相信它最多用CAST语句,而不仅仅是引号)注意我可能是错的,虽然我从来没有使用过任何一个只需将ID转换为INT。
如果您对CAST命令感兴趣,可以阅读更多here。 当然还有官方文件here
以下是您的复制和粘贴版本:
SELECT * FROM 'IMMessageInfo' WHERE CAST(uid as INT) > 10000 ORDER BY uid DESC
(完整代码如下(它是python 2.7.6;所以它可能看起来与你使用的有点不同:))
import sqlite3
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS tab (rowid int, data text)''')
c.execute("INSERT INTO tab (rowid, data) VALUES (10, 'MynameisMike')")
conn.commit()
c.execute("SELECT * FROM tab WHERE rowid > 9")
print(c.fetchone())