MariaDB LENGTH() 函数使用指南
在 MariaDB 中,LENGTH() 是一个内置的字符串函数。在默认模式下,它以字节为单位返回给定字符串的长度;在 Oracle 模式下,它以字符为单位返回字符串的长度。
如果您要获得字符串中字符数量,请使用 CHAR_LENGTH() 或者 CHARACTER_LENGTH() 函数。
如果您要获得字符串中的位数量,请使用 BIT_LENGTH() 函数。
LENGTHB() 是 默认模式下的 LENGTH() 的同义词,并且语义更明确, 您应该首选 LENGTHB()。
MariaDB LENGTH() 语法
这里是 MariaDB LENGTH() 函数的语法:
LENGTH(str)
参数
str- 必需的。需要计算长度的字符串。参数可以是其他的类型,比如数字或者日期等,
LENGTH()函数会首先将其转为字符串再计算长度。
如果您未提供任何参数, MariaDB 将报告错误: ERROR 1582 (42000): Incorrect parameter count in the call to native function ‘LENGTH’。
返回值
默认模式下,MariaDB LENGTH(str) 函数返回指定字符串的以字节为单位的长度,即字节的数量。
Oracle 模式下, MariaDB LENGTH(str) 函数返回指定字符串的以字符为单位的长度,即字符的数量。
当参数为 NULL 时, LENGTH() 函数将返回 NULL。
MariaDB LENGTH() 示例
基本用法
这个语句展示了 MariaDB LENGTH() 函数的各种基本用法:
SELECT
LENGTH('Hello'),
LENGTH(''),
LENGTH(20),
LENGTH(-20),
LENGTH(+20),
LENGTH(NOW()),
LENGTH(CURDATE()),
LENGTH('你好'),
LENGTH(NULL)\G
输出:
*************************** 1. row ***************************
LENGTH('Hello'): 5
LENGTH(''): 0
LENGTH(20): 2
LENGTH(-20): 3
LENGTH(+20): 2
LENGTH(NOW()): 19
LENGTH(CURDATE()): 10
LENGTH('你好'): 6
LENGTH(NULL): NULL注意:
LENGTH(-20)的结果是3。这是因为-20对应的字符串是'-20',LENGTH('-20')的结果为3。LENGTH(+20)的结果是2。这是因为+20相当于20,对应的字符串是'20',LENGTH('20')的结果为2。LENGTH(NOW())相当于LENGTH('2021-04-02 21:18:57')。LENGTH('你好')的结果是6。这是因为我这里用的编码是UTF-8,其中一个中文字占用 3 个字节。
Oracle 模式
在 Oracle 模式下, LENGTH() 函数将返回给定字符串的字符数而不是字节数。下面的示例分步骤展示了这一点。
-
使用下面的语句将会话切换到 Oracle 模式:
SET SESSION sql_mode='ORACLE'; -
下面的语句使用
LENGTH()计算字符串'你好'的长度:SELECT LENGTH('你好');输出:
+------------------+ | LENGTH('你好') | +------------------+ | 2 | +------------------+这次它返回字符数 (2) 而不是字节数 (6)。
在 Oracle 模式下,LENGTH() 与 CHAR_LENGTH() 或者 CHARACTER_LENGTH() 函数相同。
结论
在默认模式下,MariaDB LENGTH() 函数以字节为单位返回给定字符串的长度。在 Oracle 模式下,LENGTH() 函数返回给定字符串的字符数量。