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()
函数返回给定字符串的字符数量。