SQL中区分
SQL计算字段长度有两个方法:
- length()
mysql> select length("abc");
+---------------+
| length("abc") |
+---------------+
| 3 |
+---------------+
mysql> select length("我是谁");
+---------------------+
| length("我是谁") |
+---------------------+
| 9 |
+---------------------+
- char_length()
mysql> select char_length("abc");
+--------------------+
| char_length("abc") |
+--------------------+
| 3 |
+--------------------+
mysql> select char_length("我是谁");
+--------------------------+
| char_length("我是谁") |
+--------------------------+
| 3 |
+--------------------------+
综上, length()计算的是字节数,char_length()计算的是字符数。中文1个字符占3个字节。
随着mysql的发展,varchar(20)表示字符数,不再是字节数。
GO
- len()
package main
import "fmt"
func main () {
fmt.Println(len("abc"))
fmt.Println(len("我是谁"))
}
输出:
3
9
- utf8.RuneCountInString()
package main
import (
"fmt"
"unicode/utf8"
)
func main () {
fmt.Println(utf8.RuneCountInString("abc"))
fmt.Println(utf8.RuneCountInString("我是谁"))
}
输出:
3
3
综上, len()计算的是字节数,utf8.RuneCountInString()计算的是字符数。