1. 程式人生 > 其它 >postgresql常用函式>to_char、trim、position

postgresql常用函式>to_char、trim、position

技術標籤:資料庫資料庫postgresql

背景描述:由於專案資料庫更換從mysql換成postgresql資料庫,一些mysql獨有函式對postgresql不起作用,例如下面案例:

根據dept_id查詢子部門(mysql函式find_in_set:類似於字串匹配)

mysql可接受0或其它number做為where 條件,postgresql只接受表示式做為where 條件,需要明確表示式為true 或者false

//mysql中查詢方法
select * from sys_dept where find_in_set(#{deptId}, ancestors)

解決方法:用sql代替自定義函式

select * from sys_dept where POSITION(trim(to_char(#{deptId}, '999999')) in ancestors) > 0

position()函式:查詢子串在父傳中的位置(前提:資料型別一致)

trim()函式:去除多餘空字串(如果沒有加trim則查詢失敗)

to_char()函式:整型轉換為字串


to_char()函式詳細介紹:

postgresql中的to_char()用法和Oracle相比,多了一個引數。

to_char(待轉換值,轉換格式);
常用轉換格式有2種:
一個是寫若干個0,如果待轉換的值位數少於於你定義的轉換格式位數,輸出值會自動在左邊補0,位數補齊到轉換格式的長度;如果待轉換的值位數多於你定義的轉換格式位數,輸出值為:##(長度跟你定義的轉換格式一樣);


另一個是寫若干個9,如果待轉換的值位數少於你定義的轉換格式位數,正常輸出;如果待轉換的值位數多於於你定義的轉換格式位數,輸出值為:##(長度跟你定義的轉換格式一樣);
轉換格式如果寫其他數字,輸出結果為轉換格式的值。

Postgresql常用函式:https://www.runoob.com/postgresql/postgresql-functions.html