[Bug] Fix string functions not support multibyte string (#3345)

Let string functions support utf8 encoding
This commit is contained in:
yangzhg
2020-05-08 12:52:46 +08:00
committed by GitHub
parent f90da72078
commit 94b3a2bd50
18 changed files with 400 additions and 33 deletions

View File

@ -0,0 +1,55 @@
---
{
"title": "CHAR_LENGTH",
"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.
-->
# char_length
## Description
### Syntax
'INT char_length (VARCHAR str)'
Returns the length of the string and the number of characters returned for multi-byte characters. For example, five two-byte width words return a length of 5, only utf8 encodeing is support at current version.
## example
```
mysql> select char_length("abc");
+--------------------+
| char_length('abc') |
+--------------------+
| 3 |
+--------------------+
mysql> select char_length("中国");
+------------------- ---+
| char_length('中国') |
+-----------------------+
| 2 |
+-----------------------+
```
## keyword
CHAR_LENGTH

View File

@ -31,7 +31,7 @@ under the License.
'VARCHAR left (VARCHAR str)'
It returns the left part of a string of specified length
It returns the left part of a string of specified length, length is char length not the byte size.
## example

View File

@ -31,7 +31,7 @@ under the License.
'INT length (VARCHAR str)'
Returns the length of the string and the number of characters returned for multi-byte characters. For example, five two-byte width words return a length of 10.
Returns the length of the string in byte size.
## example

View File

@ -0,0 +1,56 @@
---
{
"title": "REVERSE",
"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.
-->
# reverse
## description
### Syntax
`VARCHAR reverse(VARCHAR str)`
The REVERSE() function reverses a string and returns the result.
## example
```
mysql> SELECT REVERSE('hello');
+------------------+
| REVERSE('hello') |
+------------------+
| olleh |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT REVERSE('你好');
+------------------+
| REVERSE('你好') |
+------------------+
| 好你 |
+------------------+
1 row in set (0.00 sec)
```
## keyword
REVERSE

View File

@ -31,7 +31,7 @@ under the License.
'VARCHAR RIGHT (VARCHAR STR)'
It returns the right part of a string of specified length
It returns the right part of a string of specified length, length is char length not the byte size.
## example

View File

@ -31,7 +31,7 @@ under the License.
'VARCHAR STRAIGHT (VARCHAR STR)'
It returns the left part of a string of specified length
It returns the left part of a string of specified length, length is char length not the byte size.
## example

View File

@ -32,7 +32,7 @@ under the License.
'VARCHAR strright (VARCHAR str)'
It returns the right part of a string of specified length
It returns the right part of a string of specified length, length is char length not the byte size.
## example