

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# SPLIT\$1PART 函數
<a name="SPLIT_PART"></a>

在指定分隔符號之處分割字串，並傳回指定位置的部分。

## 語法
<a name="SPLIT_PART-synopsis"></a>

```
SPLIT_PART(string, delimiter, position)
```

## 引數
<a name="SPLIT_PART-arguments"></a>

 *string*   
要分割的字串資料欄、運算式或字串常值。字串可以是 CHAR 或 VARCHAR。

 *delimiter*   
分隔符號字串，表示輸入 *string* 的部分。  
如果 *delimiter* 是常值，請以單引號括住。

 *position*   
要傳回之*字串*部分的位置 (從 1 起算)。必須是大於 0 的整數。如果 *position* 大於字串部分的數目，SPLIT\$1PART 會傳回空字串。如果在 *string* 中找不到 *delimiter*，則傳回的值包含指定部分的內容，這可能是整個 *string* 或空值。

## 傳回類型
<a name="SPLIT_PART-return-type"></a>

CHAR 或 VARCHAR 字串，與*字串*參數相同。

## 範例
<a name="SPLIT_PART-examples"></a>

下列範例會使用 `$` 分隔符號將字串常值分割成多個部分，並傳回第二部分。

```
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
```