編輯MaxCompute SQL 時,經常會需要在某個表N個列中指定一些列。若需要指定的列比較少,編寫SQL時一個個輸入既可。當遇到列多的時候,一個個輸入就會非常費勁。本文將介紹如何在編寫MaxCompute SQL時通過正規表示式表達列(column),從而提升編碼效率。
首先用一個簡單的示例介紹正規表示式的使用方法:
SELECT `abc.*` FROM t;--查詢 t 表中所有名字以 'abc' 開頭的列。複製程式碼
如上示例,使用了正規表示式"abc.*",在MaxCompute SQL中,正規表示式需要使用 ` 符號括起來,這個符號是鍵盤上 1 鍵左邊的那個鍵,稱做反單引號(注意需英文模式輸入) 。
正則表達選列的一個非常重要的用法是,使用反選的方式來選列。如:
SELECT `(ds)?+.+` FROM t;--選t表中列名字不叫‘ds’的所有列。 複製程式碼
類似的用法還有:
(ds|pt)?+.+
排除兩列.(d.*)?+.+
排除名字以d打頭的所有列.
注意:在排除多個列的時候,如果col2是col1的字首,則一定要把col1寫到col2的前面(長的寫前面)。比如一個表有2個分割槽你不想select,一個叫ds,另一個叫dshh,那麼要寫成 (dshh|ds)?+.+
,而不能寫成 (ds|dshh)?+.+
。
本文為雲棲社群原創內容,未經允許不得轉載。