2017-03-02 57 views
1

運行大查詢選擇大小寫當從命令行進行查詢時。查看字符串時,如果要查看數字值並將其轉換爲整數 - 需要將其與一個值進行比較並返回布爾值,以便case語句正常工作。比較要在BigQuery中返回布爾值的整數

bq query SELECT case when integer(right(strWithNumb,8))> 10000000 then right(strWithNumb,8) else "no" end FROM [Project:bucket.mytable] 

返回

「CASE預計當表達式爲布爾」。

我想:

boolean(integer(right(strWithNumb,8))> 10000000) 

,但得到

「期待: 」當「 ...」

回答

1

即使你的原始查詢在Web UI的工作 - 它在bq命令行工具中失敗取決於您的環境 - 例如,如果您在PC上

嘗試轉義>字符與^幷包含整個查詢與",如下面的示例中所示。請注意,也"no"

bq query "SELECT case when integer(right(strWithNumb,8)) ^> 10000000 then right(strWithNumb,8) else \"no\" end FROM [Project:bucket.mytable]" 

逃逸"就可以避免以後通過改變"'

bq query "SELECT case when integer(right(strWithNumb,8)) ^> 10000000 then right(strWithNumb,8) else 'no' end FROM [Project:bucket.mytable]" 

多一點的解釋:

當您執行原來的命令(在PC機例如通過Google Cloud SDK Shell)您的實際查詢變成如下

SELECT case when integer(right(strWithNumb,8)) then right(strWithNumb,8) else "no" end FROM [Project:bucket.mytable] 

正如你所看到的查詢您> 10000000部分丟失從而使WHEN表達INTEGER而不是預期BOOLEAN

希望這有助於

+0

非常有幫助謝謝 –