Skip to content

Commit

Permalink
all
Browse files Browse the repository at this point in the history
  • Loading branch information
lzyy2024 committed Jan 28, 2025
1 parent 733d881 commit 3fad78c
Show file tree
Hide file tree
Showing 10 changed files with 620 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
{
"title": "COMPRESS",
"language": "en"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## Description
The COMPRESS function is used to compress strings or values into binary data. The compressed data can be decompressed using the UNCOMPRESS function.

## Syntax

```sql
COMPRESS(<uncompressed_str>)
```

## Parameters

| Parameters | Description |
|--------------------|---------------|
| `<uncompressed_str>` | Uncompressed raw string |

The parameter type is varchar or string

## Return Value
The return string is the same as the input <uncompressed_str> type
The first ten digits of the returned string are the hexadecimal length of the original string, for example, 0x01000000. Followed by the compressed value.

Special case:
- <uncompressed_str> Return '0x' when input is ''

## Example

``` sql
select compress('abc');
```
```text
+----------------------------------+
| compress('abc') |
+----------------------------------+
| 0x03000000789C4B4C4A0600024D0127 |
+----------------------------------+
```
```
mysql> select compress('');
```
```
+--------------+
| compress('') |
+--------------+
| 0x |
+--------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
{
"title": "UNCOMPRESS",
"language": "en"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## Description
The UNCOMPRESS function is used to extract binary data into a string or value, and the binary data needs to be the result of 'COMPRESS'

## Syntax

```sql
UNCOMPRESS(<compressed_str>)
```

## Parameters

| Parameters | Description |
|--------------------|---------------|
| `<compressed_str>` | Compressed binary data |

The parameter type is varchar or string

## Return Value
The return value is the same as the input <compressed_str> type

Special cases:
- <compressed_str> Returns NULL if the binary data is not compressed.


## Example

``` sql
select uncompress(compress('abc'));
```
```text
+-----------------------------+
| uncompress(compress('abc')) |
+-----------------------------+
| abc |
+-----------------------------+
```
```
select uncompress('0x03000000789C4B4C4A0600024D019');
```
```
+-----------------------------------------------+
| uncompress('0x03000000789C4B4C4A0600024D019') |
+-----------------------------------------------+
| NULL |
+-----------------------------------------------+
```
`0x03000000789c4b4c4a0600024d019` is `compress('abc')` has carried on the tiny changes, it is illegal.
```
select uncompress(compress(''));
```
```
+--------------------------+
| uncompress(compress('')) |
+--------------------------+
| |
+--------------------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
{
"title": "COMPRESS",
"language": "zh-CN"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## 描述
COMPRESS 函数用于将字符串或值压缩成二进制数据,压缩后的数据可通过 `UNCOMPRESS` 函数解压还原。

## 语法

```sql
COMPRESS(<uncompresse_str>)
```

## 参数

| 参数 | 说明 |
|--------------------|---------------|
| `<uncompressed_str>` | 未压缩的原串 |

参数类型是varchar或者string

## 返回值
返回串与输入的 <uncompressed_str> 类型一致
返回串的前十位是原串长度的十六进制形式, 例如: 0x01000000。后面的是压缩值。
特殊情况:
- <uncompressed_str> 输入为 ‘’ 时,返回 '0x'

## 举例

``` sql
select compress('abc');
```
```text
+----------------------------------+
| compress('abc') |
+----------------------------------+
| 0x03000000789C4B4C4A0600024D0127 |
+----------------------------------+
```
```
mysql> select compress('');
```
```
+--------------+
| compress('') |
+--------------+
| 0x |
+--------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
{
"title": "UNCOMPRESS",
"language": "zh-CN"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## 描述
UNCOMPRESS 函数用于将二进制数据解压缩成字符串或值,二进制数据需要是`COMPRESS`的结果

## 语法

```sql
UNCOMPRESS(<compressed_str>)
```

## 参数

| 参数 | 说明 |
|--------------------|---------------|
| `<compressed_str>` | 压缩得到的二进制数据 |

参数类型是varchar或者string

## 返回值
返回值与输入的 <compressed_str> 类型一致
特殊情况:
- <compressed_str> 输入不是`COMPRESS`得到的二进制数据时, 返回 NULL.


## 举例

``` sql
select uncompress(compress('abc'));
```
```text
+-----------------------------+
| uncompress(compress('abc')) |
+-----------------------------+
| abc |
+-----------------------------+
```
```
select uncompress('0x03000000789C4B4C4A0600024D019');
```
```
+-----------------------------------------------+
| uncompress('0x03000000789C4B4C4A0600024D019') |
+-----------------------------------------------+
| NULL |
+-----------------------------------------------+
```
`0x03000000789C4B4C4A0600024D019`是compress('abc')进行了微小的修改,它是非法的。
```
select uncompress(compress(''));
```
```
+--------------------------+
| uncompress(compress('')) |
+--------------------------+
| |
+--------------------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
{
"title": "COMPRESS",
"language": "zh-CN"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## 描述
COMPRESS 函数用于将字符串或值压缩成二进制数据,压缩后的数据可通过 `UNCOMPRESS` 函数解压还原。

## 语法

```sql
COMPRESS(<uncompressed_str>)
```

## 参数

| 参数 | 说明 |
|--------------------|---------------|
| `<uncompressed_str>` | 未压缩的原串 |

参数类型是varchar或者string

## 返回值
返回串与输入的 <uncompressed_str> 类型一致
返回串的前十位是原串长度的十六进制形式, 例如: 0x01000000。后面的是压缩值。
特殊情况:
- <uncompressed_str> 输入为 ‘’ 时,返回 '0x'

## 举例

``` sql
select compress('abc');
```
```text
+----------------------------------+
| compress('abc') |
+----------------------------------+
| 0x03000000789C4B4C4A0600024D0127 |
+----------------------------------+
```
```
mysql> select compress('');
```
```
+--------------+
| compress('') |
+--------------+
| 0x |
+--------------+
```
Loading

0 comments on commit 3fad78c

Please sign in to comment.