iT邦幫忙

2025 iThome 鐵人賽

DAY 16
1

SQL 語法呼叫函數,給參數的方式比較彈性,就像 Python 一樣,可以使用位置參數或命名參數來傳遞資料,下面會使用 concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false) 當範例,並說明兩種方式有什麼不同,以及可以怎麼混合使用。

按照順序傳遞

concat_lower_or_upper 的來說,'Hello' 是第一個位置,就是 a 這個變數的參數。

SELECT concat_lower_or_upper('Hello', 'World', true);

而因為 uppercase 有預設值,所以可以省略第三個位置的參數。

SELECT concat_lower_or_upper('Hello', 'World');

指定參數名稱

如果覺得用順序決定參數太不彈性,也可以直接把每個參數指派到對應的變數。

SELECT concat_lower_or_upper(a => 'Hello', uppercase => true, b =>
'World')

混合兩種方式

當然,也可以混合兩種方式呼叫,不過這有一些限制。

SELECT concat_lower_or_upper('Hello', 'World', uppercase => true);

混合的時候,如果第一個位置到某個位置的參數是按照順序傳遞,中間不能突然出現指定參數名稱的方式,後面的位置開始指定參數名稱之後,也不能突然變成按照順序傳遞的方式。像下面的範例, Hello 在第一個位置以順序傳遞,但後面的參數要改使用指定參數的話,就得通通都用指定參數的方式。

SELECT concat_lower_or_upper('Hello', uppercase => true, b => 'World');

但如果一下子用指定參數的方式,一下子又恢復按照順序傳遞,會出現 positional argument cannot follow named argument 的錯誤訊息。

SELECT concat_lower_or_upper(a => 'Hello', 'World', uppercase => true);


上一篇
Day 15: 如何新增函數?
下一篇
Day 17: Generated Columns 的作用與如何使用
系列文
我所不知道的PostgreSQL 30天30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言