本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在指定分隔符號之處分割字串,並傳回指定位置的部分。
語法
SPLIT_PART(string, delimiter, position)
引數
- string
-
要分割的字串資料欄、運算式或字串常值。字串可以是 CHAR 或 VARCHAR。
- delimiter
-
分隔符號字串,表示輸入 string 的部分。
如果 delimiter 是常值,請以單引號括住。
- position
-
要傳回之字串部分的位置 (從 1 起算)。必須是大於 0 的整數。如果 position 大於字串部分的數目,SPLIT_PART 會傳回空字串。如果在 string 中找不到 delimiter,則傳回的值包含指定部分的內容,這可能是整個 string 或空值。
傳回類型
CHAR 或 VARCHAR 字串,與字串參數相同。
範例
下列範例會使用 $
分隔符號將字串常值分割成多個部分,並傳回第二部分。
select split_part('abc$def$ghi','$',2)
split_part
----------
def
以下範例將使用 $
分隔符號將字串常值分割成多個部分。它傳回一個空字串,因為沒有找到部分 4
。
select split_part('abc$def$ghi','$',4)
split_part
----------
以下範例將使用 #
分隔符號將字串常值分割成多個部分。它傳回整個字串,這是第一部分,因為沒有找到分隔符號。
select split_part('abc$def$ghi','#',1)
split_part
------------
abc$def$ghi
下列範例將時間戳記欄位 LISTTIME 分割成年、月、日元素。
select listtime, split_part(listtime,'-',1) as year,
split_part(listtime,'-',2) as month,
split_part(split_part(listtime,'-',3),' ',1) as day
from listing limit 5;
listtime | year | month | day
---------------------+------+-------+------
2008-03-05 12:25:29 | 2008 | 03 | 05
2008-09-09 08:03:36 | 2008 | 09 | 09
2008-09-26 05:43:12 | 2008 | 09 | 26
2008-10-04 02:00:30 | 2008 | 10 | 04
2008-01-06 08:33:11 | 2008 | 01 | 06
下列範例選取 LISTTIME 時間戳記欄位,依 '-'
字元分割以取得月份 (LISTTIME 字串的第二部分),然後計算每月的項目數:
select split_part(listtime,'-',2) as month, count(*)
from listing
group by split_part(listtime,'-',2)
order by 1, 2;
month | count
-------+-------
01 | 18543
02 | 16620
03 | 17594
04 | 16822
05 | 17618
06 | 17158
07 | 17626
08 | 17881
09 | 17378
10 | 17756
11 | 12912
12 | 4589