簡體   English   中英

PSQL - 如何過濾列值是否等於特定字符串

[英]PSQL - How to filter out if a column value equals a specific string

我創建了一個名為option的列的數據庫,其中值是'Call','Put'或None的varchar。 當我設置數據庫時,如果沒有Call或Put,我將默認值設為None。

我正在嘗試過濾掉包含'Call'或'Put'選項的行。 但是,當我寫查詢時

SELECT * FROM holdings h WHERE h.option!='Call'AND h.option!='Put';

I get this error:
    curr.execute('SELECT option FROM holdings WHERE option != 'Call';')
                                                                  ^
SyntaxError: invalid syntax

當我嘗試使用NOT LIKE'%Call%'時出現此錯誤:

curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE '%Call%';')
NameError: name 'Call' is not defined

任何幫助,將不勝感激

謝謝!

代碼如下所示:

import psycopg2
import csv
conn = psycopg2.connect('dbname = db user = asmith')
curr = conn.cursor()
curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')
tups = curr.fetchall()
for tup in tups:
    print tup

編輯:當我運行這兩行時:

curr.execute('SELECT * FROM holdings h WHERE option = \'Call\' OR option = \'Put\';') 
curr.execute('SELECT * FROM holdings h WHERE option != \'Call\' AND option != \'Put\';')                                                                                                                                                                                                                                                                                                         

第一個查詢給了我所有帶有Call或Put的行,但是當我運行第二個查詢時,我什么也得不到,即使它理論上應該給我所有帶有None選項的行。 有誰知道那是為什么?

看起來像語法錯誤:

curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')

字符串1是'SELECT option FROM holdings h WHERE option NOT LIKE ' ,打破' (在%Call%之前),然后是一些名為Call的變量(你的編譯器找不到),然后是String 2 ';'

你必須逃離'像這樣反斜杠:

curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE \\'%Call%\\';')

聲明中存在邏輯錯誤。 你應該寫這個:

SELECT * FROM holdings h WHERE h.option != 'Call' OR h.option != 'Put';

或這個:

SELECT * FROM holdings h WHERE h.option NOT IN ( 'Call' , 'Put');

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM