淺談Greenplum的Boolean類型與Text類型之間的轉換
在Greenplum或者Deepgreen中,如果我們想直接把Boolean類型轉化為Text,那麼可能會讓你失望,因為他們不支持這種直接轉化,但是可以通過UDF的方式實現,下面來簡單看一下這個過程。
首先,當我們運行下面的SQL來轉換Boolean為Text類型時,會得到一個大寫測錯誤:-D
DECLARE qgis_4 BINARY CURSOR FOR SELECT st_asbinary("location","NDR"),ctid,"start_datetime"::text,"end_datetime"::text,"temperature"::text,"pressure"::text,boolout("rainfall")::text,"humidity"::text,"illuminance"::text,"uva"::text,"ubv"::text FROM "event"."weather_soratena" WHERE "location" && st_makeenvelope(136.92967584819169247,37.11712946054284856,137.3367917387353998,37.52424535108657011,4326) AND st_intersects(st_curvetoline("location"),st_makeenvelope(136.92967584819169247,37.11712946054284856,137.3367917387353998,37.52424535108657011,4326))
錯誤的原因是GP不支持將cstring轉換成其他的數據類型(如下代碼顯示)
gpadmin=# select boolout("1")::text;
這時候我們該怎麼辦?放棄嗎?當然不,我們可以通過UDF(User Defined Function)的方式來變通實現。這裡我們定義一個BooleanToText函數,用來實現轉換功能:
postgres=# CREATE FUNCTION BooleanToText(boolean) RETURNS text STRICT IMMUTABLE LANGUAGE PLPGSQL AS $$ BEGIN IF $1 IS TRUE THEN RETURN "true"; ELSE RETURN "false"; END IF; END; $$;
有朋友說,你開頭的錯誤還是不能解決啊!姑且別急,接著看 ↓
針對cstring無法轉換成text的問題,我們可以使用boolin函數先將cstring轉換為boolean類型,然後在進行text的轉換:
## 無法直接轉換演示
End~
※阿里人工智慧實驗室王剛:找到合適的應用場景是實現人工智慧商業化的關鍵點
※簡易數據恢復方案實戰:流程和工具
※高清大圖!淘寶造物節,「奇市江湖」里那些腦洞大開的創意產品
※簡單入門循環神經網路RNN:時間序列數據的首選神經網路
※阿里巴巴1582.73億背後的持續交付如何玩
TAG:雲棲社區 |
※TypeScript基礎之高級類型的可辨識聯合(Discriminated Unions)
※類型轉換運算符 運算符重載 operator new operator delete
※python基礎之變數類型number(math模塊)
※python中list,array,mat,tuple大小及類型
※「Good idea/solution」 類型作文審題
※Hibernate 映射枚舉Enum 類型的屬性
※Google出品的Python代碼靜態類型分析器:Pytype
※Chrome 66 新特性:CSS 類型對象模型,非同步剪貼板 API,AudioWorklet,等
※opencv Mat類型和BYTE*指針類型互轉
※「Python」Chapter1 變數和簡單數據類型
※solidity之地址類型
※SM、jyp、yg、cube、ymc等公司類型——其中big hit最霸氣
※澳大利亞 Bunjil Place,高難度木曲線營造類型場所/fjmt
※Swift 類型轉換
※Facebook主頁成效分析:帖子有什麼作用?Facebook帖子類型&作用
※Adobe Reader類型混淆導致代碼執行漏洞分析
※由光環新網運營的 AWS 中國區域現已推出 Amazon RDS for Oracle 支持 X1 實例類型
※Shopify賬號有哪些類型?Shopify賬號類型&賬號許可權
※scala學習-泛型、界定、形變、this.type、複合類型、抽象類型
※Pyright:微軟提供的Python靜態類型檢查器