Optimize Hex and add related Doc (#6697)

I tested hex in a 1000w times for loop with random numbers,
old hex avg time cost is 4.92 s,optimize hex avg time cost is 0.46 s which faster nearly 10x.
This commit is contained in:
zhoubintao
2021-10-13 11:36:14 +08:00
committed by GitHub
parent 6cbefa9f10
commit ad949c2f65
8 changed files with 415 additions and 6 deletions

View File

@ -0,0 +1,85 @@
---
{
"title": "hex",
"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.
-->
# hex
## description
### Syntax
`VARCHAR hex(VARCHAR str)`
`VARCHAR hex(BIGINT num)`
If the input parameter is a number, the string representation of the hexadecimal value is returned;
If the input parameter is a string, each character will be converted into two hexadecimal characters, and all the characters after the conversion will be spliced into a string for output
## example
```
input string
mysql> select hex('1');
+----------+
| hex('1') |
+----------+
| 31 |
+----------+
mysql> select hex('@');
+----------+
| hex('@') |
+----------+
| 40 |
+----------+
mysql> select hex('12');
+-----------+
| hex('12') |
+-----------+
| 3132 |
+-----------+
```
```
intput num
mysql> select hex(12);
+---------+
| hex(12) |
+---------+
| C |
+---------+
mysql> select hex(-1);
+------------------+
| hex(-1) |
+------------------+
| FFFFFFFFFFFFFFFF |
+------------------+
```
## keyword
HEX

View File

@ -0,0 +1,63 @@
---
{
"title": "unhex",
"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.
-->
# unhex
## description
### Syntax
`VARCHAR unhex(VARCHAR str)`
Enter a string, if the length of the string is 0 or an odd number, an empty string is returned;
If the string contains characters other than `[0-9], [a-z], [A-Z]`, an empty string is returned;
In other cases, every two characters are a group of characters converted into hexadecimal, and then spliced into a string for output.
## example
```
mysql> select unhex('@');
+------------+
| unhex('@') |
+------------+
| |
+------------+
mysql> select unhex('41');
+-------------+
| unhex('41') |
+-------------+
| A |
+-------------+
mysql> select unhex('4142');
+---------------+
| unhex('4142') |
+---------------+
| AB |
+---------------+
```
## keyword
UNHEX