SQL 查询 - 使用 None 过滤掉列值
SQL Query - Filtering out column values with None
我有一个名为 raw 的 PSQL 数据库,其中一列是选项,类型为 VARCHAR。该值为 'Call'、'Put' 或 None.
我想 select 选项字段的值不是 '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 选项的行,而不只是做一个设置差异。理想情况下,我希望能够只 select 那些不是 'Call' 和 'Put' 的行,而不调用所有行和具有 'Call' 和 [=] 的行的区别31=]
感谢您的帮助!
SELECT * FROM holdings h WHERE option =''
如果您想要 select 行带有 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
我有一个名为 raw 的 PSQL 数据库,其中一列是选项,类型为 VARCHAR。该值为 'Call'、'Put' 或 None.
我想 select 选项字段的值不是 '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 选项的行,而不只是做一个设置差异。理想情况下,我希望能够只 select 那些不是 'Call' 和 'Put' 的行,而不调用所有行和具有 'Call' 和 [=] 的行的区别31=]
感谢您的帮助!
SELECT * FROM holdings h WHERE option =''
如果您想要 select 行带有 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