亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PostgreSQL,允許按不存在的字段進行過濾

PostgreSQL,允許按不存在的字段進行過濾

Go
慕少森 2022-08-15 15:34:48
我正在使用帶有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 語句在執行之前進行分析,并且沒有條件編譯或短路,因此如果引用了不存在的列,則會出現錯誤。


查看完整回答
反對 回復 2022-08-15
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

為什么不先獲得表中列的列表?喜歡這個


select column_name 

from information_schema.columns 

where table_name = 'table_name' and (column_name = 'size' or column_name = 'length');

結果將是存在的列。


查看完整回答
反對 回復 2022-08-15
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

我會嘗試首先檢查信息架構

“從INFORMATION_SCHEMA中選擇column_name。table_name ='table_name';”

然后根據結果做查詢


查看完整回答
反對 回復 2022-08-15
  • 3 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號