我正在使用帶有Go驅動程序的PostgreSQL。有時我需要查詢不存在的字段,只是為了檢查 - 也許數據庫中存在某些內容。在查詢之前,我無法判斷該字段是否存在。例:where size=10 or length=10默認情況下,我收到一個錯誤,但是,該列可能存在,我可以得到一些結果。column "length" does not existsize是否有可能處理此類情況以返回可能的內容?編輯:是的,我可以先獲取所有現有列。但是初始查詢可能相當復雜,不是由我直接創建的,我只能修改它們。這意味著查詢可以像前面的示例一樣簡單,也可以像下面這樣復雜得多:WHERE size=10 OR (length=10 AND n='example') OR (c BETWEEN 1 and 5 AND p='Mars')如果缺少列和 - 這是否意味著我必須解析SQL,按(或其他運算符)拆分它,檢查查詢的每個部分,然后刪除任何缺少列的部分 - 最后生成新的SQL查詢?lengthcOR任何更簡單的方法?
3 回答

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
除了從可用列列表中構造SQL字符串之外,沒有辦法做你想做的事情,可以通過查詢來獲取。information_schema.columns
SQL 語句在執行之前進行分析,并且沒有條件編譯或短路,因此如果引用了不存在的列,則會出現錯誤。

holdtom
TA貢獻1805條經驗 獲得超10個贊
為什么不先獲得表中列的列表?喜歡這個
select column_name
from information_schema.columns
where table_name = 'table_name' and (column_name = 'size' or column_name = 'length');
結果將是存在的列。

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
我會嘗試首先檢查信息架構
“從INFORMATION_SCHEMA中選擇column_name。table_name ='table_name';”
然后根據結果做查詢
- 3 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消