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

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

SELECT * EXCEPT

SELECT * EXCEPT

Cats萌萌 2019-09-03 16:19:07
是否有任何RDBMS實現類似的東西SELECT * EXCEPT?我所追求的是獲取除特定TEXT / BLOB字段之外的所有字段,我只想選擇其他所有字段。幾乎每天我都會向我的同事抱怨有人應該實現這個......它非常煩人,它不存在。編輯:我理解大家的關注SELECT *。我知道與之相關的風險SELECT *。但是,至少在我的情況下,這不會用于任何生產級代碼,甚至是開發級代碼; 嚴格用于調試,當我需要輕松查看所有值時。正如我在一些評論中所說,我工作的地方嚴格來說是一個命令行商店,在ssh上做一切。這使得很難使用任何gui工具(不允許與數據庫的外部連接)等。謝謝你的建議。
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

正如其他人所說,在查詢中執行此操作并不是一個好主意,因為當有人在將來更改表結構時,它很容易出現問題。但是,有一種方法可以做到這一點......我無法相信我實際上在暗示這一點,但本著回答實際問題的精神......


使用動態SQL執行此操作...這將執行除“description”列之外的所有列。您可以輕松將其轉換為函數或存儲過程。


declare @sql varchar(8000),

    @table_id int,

    @col_id int


set @sql = 'select '


select @table_id = id from sysobjects where name = 'MY_Table'


select @col_id = min(colid) from syscolumns where id = @table_id and name <> 'description'

while (@col_id is not null) begin

    select @sql = @sql + name from syscolumns where id = @table_id and colid = @col_id


    select @col_id = min(colid) from syscolumns where id = @table_id and colid > @col_id and name <> 'description'

    if (@col_id is not null) set @sql = @sql + ','

    print @sql

end


set @sql = @sql + ' from MY_table'


exec @sql


查看完整回答
反對 回復 2019-09-03
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

DB2允許這樣做。列的屬性/說明符為Hidden。


從syscolumns文檔


HIDDEN 

CHAR(1)NOT NULL WITH DEFAULT'N' 

表示是否隱式隱藏了列:


P部分隱藏。SELECT *隱式隱藏該列。


N沒有隱藏。該列對所有SQL語句都可見。


創建表文檔作為創建列的一部分,您可以指定IMPLICITLY HIDDEN修飾符


來自示例DDL 隱式隱藏的列如下


CREATE TABLE T1

(C1 SMALLINT NOT NULL,

C2 CHAR(10) IMPLICITLY HIDDEN,

C3 TIMESTAMP)

IN DB.TS;

這種能力是否是推動DB2采用的交易制定者,這仍然是未來讀者的一種練習。


查看完整回答
反對 回復 2019-09-03
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

是否有任何RDBMS實現SELECT * EXCEPT之類的東西?


是的,Google Big Query實現SELECT * EXCEPT:


SELECT * EXCEPT語句指定要從結果中排除的一個或多個列的名稱。輸出中省略了所有匹配的列名稱。


WITH orders AS(

  SELECT 5 as order_id,

  "sprocket" as item_name,

  200 as quantity

)

SELECT * EXCEPT (order_id)

FROM orders;

輸出:


+-----------+----------+

| item_name | quantity |

+-----------+----------+

| sprocket  | 200      |

+-----------+----------+

編輯:


H2數據庫也支持SELECT * EXCEPT (col1, col2, ...)語法。


通配符表達式


SELECT語句中的通配符表達式。通配符表達式表示所有可見列??梢允褂每蛇x的EXCEPT子句排除某些列。


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 1222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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