

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# OVERLAY
<a name="sql-reference-overlay"></a>

```
 OVERLAY ( <original-string>
           PLACING <replacement-string>
           FROM <start-position>
           [ FOR <string-length> ]
         )
 <original-string> := <character-expression>
 <replacement-string> := <character-expression>
 <start-position> := <integer-expression>
 <string-length> := <integer-expression>
```

OVERLAY 函数用于将第一个字符串参数的一部分（原始字符串）替换为第二个字符串参数（替换字符串）。

起始位置表示原始字符串中应覆盖替换字符串的字符位置。可选的字符串长度参数确定要替换原始字符串的字符数（如果未指定，则默认为替换字符串的长度）。如果替换字符串中的字符多于原始字符串中剩余的字符，则只需附加剩余的字符即可。

如果起始位置大于原始字符串的长度，则只需附加替换字符串即可。如果起始位置小于 1，则替换字符串的（1 - 起始位置）字符将添加到结果之前，其余字符叠加在原始字符串上（请参阅下面的示例）。

如果字符串长度小于零，则会引发异常。

如果任何输入参数为 null，则结果为 null。

## 示例
<a name="sqlrf-overlay-examples"></a>


| 函数 | 结果 | 
| --- | --- | 
|  OVERLAY ('12345' PLACING 'foo' FROM 1)  |  foo45  | 
|  OVERLAY ('12345' PLACING 'foo' FROM 0)  |  foo345  | 
|  OVERLAY ('12345' PLACING 'foo' FROM -2)  |  foo12345  | 
|  OVERLAY ('12345' PLACING 'foo' FROM 4)  |  123foo  | 
|  OVERLAY ('12345' PLACING 'foo' FROM 17)  |  12345foo  | 
|  OVERLAY ('12345' PLACING 'foo' FROM 2 FOR 0)  |  1foo2345  | 
|  OVERLAY ('12345' PLACING 'foo' FROM 2 FOR 2)  |  1foo45  | 
|  OVERLAY ('12345' PLACING 'foo' FROM 2 FOR 9)  |  1foo  | 

## 限制
<a name="sqlrf-overlay-limitations"></a>

Amazon Kinesis Data Analytics 不支持 SQL:2008 中定义的可选 USING CHARACTERS \$1 OCTETS 子句；仅假设使用 USING CHARACTERS。严格的 SQL:2008 还要求小于 1 的起始位置返回 null 结果，而不是上述行为。这些都偏离了标准。