我有一个名为raw的PSQL数据库,其中一个列是选项,类型为VARCHAR。值为“Call”,“Put”或“None”。
我想选择选项字段的值不是'Call'或'Put'的所有行,而是选择None。
但是,当我运行此查询时:
curr.execute('SELECT * FROM holdings h WHERE option != \'Call\' AND option != \'Put\';')
没有任何回复
如果我跑:
curr.execute('SELECT * FROM holdings h WHERE option != \'Call\';')
我只获得带有选项值='Put'
的行如何选择None获取行,而不仅仅是设置差异。理想情况下,我希望能够选择那些不是'Call'和'Put'的行,而不会调用所有行的差异以及那些具有'Call'和'Put'的行
感谢您的帮助!
答案 0 :(得分:0)
SELECT * FROM holdings h WHERE option =''
答案 1 :(得分:0)
如果您要选择包含null
选项的行,则必须通过option IS NULL
指明:
SELECT * FROM holdings WHERE option IS NULL
而不是option != 'Call' AND option != 'Put'
您可以使用option NOT IN ('Call', 'Put')
:
SELECT * FROM holdings WHERE option NOT IN ('Call', 'Put')
与OR
:
SELECT * FROM holdings WHERE option NOT IN ('Call', 'Put') OR option IS NULL