

# 字符串函数
<a name="s3-select-sql-reference-string"></a>

**重要**  
不再向新客户提供 Amazon S3 Select。Amazon S3 Select 的现有客户可以像往常一样继续使用该功能。[了解详情](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon S3 Select 支持以下字符串函数。

**Topics**
+ [CHAR\$1LENGTH, CHARACTER\$1LENGTH](#s3-select-sql-reference-char-length)
+ [LOWER](#s3-select-sql-reference-lower)
+ [SUBSTRING](#s3-select-sql-reference-substring)
+ [TRIM](#s3-select-sql-reference-trim)
+ [UPPER](#s3-select-sql-reference-upper)

## CHAR\$1LENGTH, CHARACTER\$1LENGTH
<a name="s3-select-sql-reference-char-length"></a>

`CHAR_LENGTH`（或 `CHARACTER_LENGTH`）计算指定字符串中的字符数。

**注意**  
`CHAR_LENGTH` 和 `CHARACTER_LENGTH` 是同义词。

### 语法
<a name="s3-select-sql-reference-char-length-syntax"></a>

```
CHAR_LENGTH ( string )
```

### 参数
<a name="s3-select-sql-reference-char-length-parameters"></a>

 *`string`*   
对其执行函数的目标字符串。

### 示例
<a name="s3-select-sql-reference-char-length-examples"></a>

```
CHAR_LENGTH('')          -- 0
CHAR_LENGTH('abcdefg')   -- 7
```

## LOWER
<a name="s3-select-sql-reference-lower"></a>

给定字符串，`LOWER` 将所有大写字符转换为小写字符。所有非大写字符保持不变。

### 语法
<a name="s3-select-sql-reference-lower-syntax"></a>

```
LOWER ( string )
```

### 参数
<a name="s3-select-sql-reference-lower-parameters"></a>

 **`string`**   
对其执行函数的目标字符串。

### 示例
<a name="s3-select-sql-reference-lower-examples"></a>

```
LOWER('AbCdEfG!@#$') -- 'abcdefg!@#$'
```

## SUBSTRING
<a name="s3-select-sql-reference-substring"></a>

指定字符串、起始索引和长度（可选)，`SUBSTRING` 返回从起始索引直至字符串结尾处的子字符串，或最大长度为输入的字符串长度的子字符串。

**注意**  
输入字符串的首字符的索引位置为 1。  
 如果 `start` < 1，且未指定长度，则索引位置设置为 1。
 如果 `start` < 1，且指定了长度，则索引位置设置为 `start + length -1`。
 如果 `start + length -1` < 0，则返回一个空字符串。
 如果 `start + length -1` > = 0，则返回从索引位置 1 开始的长度为 `start + length - 1` 的子字符串。

### 语法
<a name="s3-select-sql-reference-substring-syntax"></a>

```
SUBSTRING( string FROM start [ FOR length ] )
```

### 参数
<a name="s3-select-sql-reference-substring-parameters"></a>

 **`string`**   
对其执行函数的目标字符串。

 **`start`**   
字符串的开始位置。

 **`length`**   
要返回的子字符串的长度。如果不存在，则执行到字符串的结尾。

### 示例
<a name="s3-select-sql-reference-substring-examples"></a>

```
SUBSTRING("123456789", 0)      -- "123456789"
SUBSTRING("123456789", 1)      -- "123456789"
SUBSTRING("123456789", 2)      -- "23456789"
SUBSTRING("123456789", -4)     -- "123456789"
SUBSTRING("123456789", 0, 999) -- "123456789" 
SUBSTRING("123456789", 1, 5)   -- "12345"
```

## TRIM
<a name="s3-select-sql-reference-trim"></a>

从字符串中剪裁前导或尾随字符。要删除的原定设置字符为空格（`' '`）。

### 语法
<a name="s3-select-sql-reference-trim-syntax"></a>

```
TRIM ( [[LEADING | TRAILING | BOTH remove_chars] FROM] string )
```

### 参数
<a name="s3-select-sql-reference-trim-parameters"></a>

 **`string`**   
对其执行函数的目标字符串。

 `LEADING` \$1 `TRAILING` \$1 `BOTH`   
此参数指示是否剪裁前导和/或尾随字符。

 **`remove_chars`**   
要删除的一组字符。`remove_chars` 可能是长度 > 1 的字符串。此函数返回包含在已删除字符串开头或结尾发现的 `remove_chars` 中任何字符的字符串。

### 示例
<a name="s3-select-sql-reference-trim-examples"></a>

```
TRIM('       foobar         ')               -- 'foobar'
TRIM('      \tfoobar\t         ')            -- '\tfoobar\t'
TRIM(LEADING FROM '       foobar         ')  -- 'foobar         '
TRIM(TRAILING FROM '       foobar         ') -- '       foobar'
TRIM(BOTH FROM '       foobar         ')     -- 'foobar'
TRIM(BOTH '12' FROM '1112211foobar22211122') -- 'foobar'
```

## UPPER
<a name="s3-select-sql-reference-upper"></a>

给定字符串，`UPPER` 将所有小写字符转换为大写字符。所有非小写字符保持不变。

### 语法
<a name="s3-select-sql-reference-upper-syntax"></a>

```
UPPER ( string )
```

### 参数
<a name="s3-select-sql-reference-upper-parameters"></a>

 **`string`**   
对其执行函数的目标字符串。

### 示例
<a name="s3-select-sql-reference-upper-examples"></a>

```
UPPER('AbCdEfG!@#$') -- 'ABCDEFG!@#$'
```