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