

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 領導節點上所支援的 SQL 函數
<a name="c_sql-functions-leader-node"></a>

某些 Amazon Redshift 查詢會分配到運算節點上執行，其他的查詢則是只在領導節點上執行。

每當查詢參考使用者建立的資料表或系統資料表 (具有 STL 或 STV 字首的資料表，以及具有 SVL 或 SVV 字首的系統畫面) 時，領導節點就會將 SQL 分送到運算節點。查詢如果只參考目錄資料表 (具有 PG 字首的資料表，例如 PG\$1TABLE\$1DEF，儲存於領導節點上)，或是未參考任何資料表，就只會在領導節點上執行。

某些 Amazon Redshift SQL 函數只有在領導者節點上才支援，在運算節點上不支援。使用領導者節點函數的查詢必須完全在領導者節點上執行，而不是在運算節點上，否則會傳回錯誤。

必須只在領導節點上執行的每個函數，其文件包含備註，說明如果函數參考使用者定義的資料表或 Amazon Redshift 系統資料表，將會傳回錯誤。關於只在領導節點上執行的功能，如需功能清單，請參閱 [僅限領導節點函數](c_SQL_functions_leader_node_only.md)。

## 範例
<a name="c_sql-functions-leader-node-examples"></a>

下列範例使用 TICKIT 資料庫為例。如需範例資料庫的詳細資訊，請前往 [範本資料庫](c_sampledb.md)。

**CURRENT\$1SCHEMA**

CURRENT\$1SCHEMA 是只限領導節點的函式。在此範例中，查詢並未參考資料表，因此只會在領導節點上執行。

```
select current_schema();
            
current_schema
---------------
public
```

在下一個範例中，查詢參考了系統目錄資料表，因此只會在領導節點上執行。

```
select * from pg_table_def
where schemaname = current_schema() limit 1;

 schemaname | tablename | column |   type   | encoding | distkey | sortkey | notnull
------------+-----------+--------+----------+----------+---------+---------+---------
 public     | category  | catid  | smallint | none     | t       |       1 | t
```

在下一個範例中，查詢參考了位於運算節點上的 Amazon Redshift 系統資料表，因此會傳回錯誤。

```
select current_schema(), userid from users;

INFO:  Function "current_schema()" not supported.
ERROR:  Specified types or functions (one per INFO message) not supported on Amazon Redshift tables.
```

**SUBSTR**

SUBSTR 也是一個僅限於領導節點函數。在以下範例中，因查詢未參考資料表，所以只會在領導節點上執行。

```
SELECT SUBSTR('amazon', 5);
            
+--------+
| substr |
+--------+
| on     |
+--------+
```

在下列範例中，查詢會參照位於運算節點上的資料表。這會導致錯誤。

```
SELECT SUBSTR(catdesc, 1) FROM category LIMIT 1;
            
ERROR: SUBSTR() function is not supported (Hint: use SUBSTRING instead)
```

若要成功執行先前的查詢，請使用 [SUBSTRING](https://docs.aws.amazon.com/redshift/latest/dg/r_SUBSTRING.html)。

```
SELECT SUBSTRING(catdesc, 1) FROM category LIMIT 1;
            
+---------------------------------+
|            substring            |
+---------------------------------+
| National Basketball Association |
+---------------------------------+
```

**FACTORIAL()**

FACTORIAL() 是僅限於領導節點函數。在以下範例中，因查詢未參考資料表，所以只會在領導節點上執行。

```
SELECT FACTORIAL(5);           

 factorial 
-------------
 120
```

在下列範例中，查詢會參照位於運算節點上的資料表。使用查詢編輯器 v2 執行時，這會導致錯誤。

```
create table t(a int);
insert into t values (5);
select factorial(a) from t;           

ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables.
Info: Function "factorial(bigint)" not supported.
```