MySQL的函数和运算符 - 字符串函数和运算符(1)

网友投稿 873 2022-11-03

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

MySQL的函数和运算符 - 字符串函数和运算符(1)

字符串函数和运算符

名称
ASCII()
BIN()
BIT_LENGTH()
CHAR()
CHAR_LENGTH()
CHARACTER_LENGTH()
CONCAT()
CONCAT_WS()
ELT()
EXPORT_SET()
FIELD()
FIND_IN_SET()
FORMAT()
FROM_BASE64()
HEX()
INSERT()
INSTR()
LCASE()
LEFT()
LENGTH()
LIKE
LOAD_FILE()
LOCATE()
LOWER()
LPAD()
LTRIM()
MAKE_SET()
MATCH
MID()
NOT LIKE
NOT REGEXP
OCT()
OCTET_LENGTH()
ORD()
POSITION()
QUOTE()
REGEXP
REGEXP_INSTR()
REGEXP_LIKE()
REGEXP_REPLACE()
REGEXP_SUBSTR()
REPEAT()
REPLACE()
REVERSE()
RIGHT()
RLIKE
RPAD()
RTRIM()
SOUNDEX()
SOUNDS LIKE
SPACE()
STRCMP()
SUBSTR()
SUBSTRING()
SUBSTRING_INDEX()
TO_BASE64()
TRIM()
UCASE()
UNHEX()
UPPER()
WEIGHT_STRING()

如果结果的长度大于 max_allowed_packet 系统变量的值,则字符串值函数返回 NULL。

对于操作字符串位置的函数,第一个位置编号为 1。

对于采用长度参数的函数,非整数参数将舍入到最接近的整数。

● ASCII(str)

返回字符串 str 最左边字符的数值。如果 str 为空(长度为0)字符串,则返回 0。如果 str 为 NULL,则返回 NULL。ASCII() 适用于 8 位字符(8位2进制能表示的字符)。

mysql> SELECT ASCII('2'); -> 50mysql> SELECT ASCII(2); -> 50mysql> SELECT ASCII('dx'); -> 100

● BIN(N)

返回二进制值 N 的字符串表示形式,其中 N 是长长整型(BIGINT)。相当于 CONV(N,10,2)。如果 N 为 NULL,则返回 NULL。

mysql> SELECT BIN(12); -> '1100'

● BIT_LENGTH(str)

返回字符串 str 的长度(位数)。

mysql> SELECT BIT_LENGTH('text'); -> 32

● CHAR(N,... [USING charset_name])

CHAR() 将每个参数 N 作为整数解释,并返回由这些整数的代码值给定的字符组成的字符串。跳过 NULL 值。

mysql> SELECT CHAR(77,121,83,81,'76'); -> 'MySQL'mysql> SELECT CHAR(77,77.3,'77.3'); -> 'MMM'

大于 255 的 CHAR() 参数将转换为多个结果字节。例如,CHAR(256) 等价于 CHAR(1,0),CHAR(256*256) 等价于 CHAR(1,0,0):

mysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256));+----------------+----------------+| HEX(CHAR(1,0)) | HEX(CHAR(256)) |+----------------+----------------+| 0100 | 0100 |+----------------+----------------+mysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));+------------------+--------------------+| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |+------------------+--------------------+| 010000 | 010000 |+------------------+--------------------+

默认情况下,CHAR() 返回一个二进制字符串。要生成给定字符集的字符串,请使用可选的 USING 子句:

mysql> SELECT CHARSET(CHAR(X'65')), CHARSET(CHAR(X'65' USING utf8));+----------------------+---------------------------------+| CHARSET(CHAR(X'65')) | CHARSET(CHAR(X'65' USING utf8)) |+----------------------+---------------------------------+| binary | utf8 |+----------------------+---------------------------------+

如果给定 USING 并且结果字符串对于给定的字符集是非法的,则发出警告。此外,如果启用了严格 SQL 模式,CHAR() 的结果将变为 NULL。

如果从 mysql 客户端中调用 CHAR(),则二进制字符串将使用十六进制表示法显示,具体取决于 --binary-as-hex 的值。

● CHAR_LENGTH(str)

返回字符串 str 的长度,以字符为单位(即多少个字符)。多字节字符计为单个字符。这意味着,对于包含五个 2 字节字符的字符串,LENGTH() 返回 10,而 CHAR_LENGTH() 返回 5。

● CHARACTER_LENGTH(str)

CHARACTER_LENGTH() 是 CHAR_LENGTH() 的同义词。

● CONCAT(str1,str2,...)

把所有参数连接成一个字符串,然后作为结果返回。可能有一个或多个参数。如果所有参数都是非二进制字符串,则结果是非二进制字符串。如果参数包含任何二进制字符串,则结果是二进制字符串。数值参数将转换为其对应的非二进制字符串形式。

如果任何参数为 NULL,CONCAT() 将返回 NULL。

mysql> SELECT CONCAT('My', 'S', 'QL'); -> 'MySQL'mysql> SELECT CONCAT('My', NULL, 'QL'); -> NULLmysql> SELECT CONCAT(14.3); -> '14.3'

对于带引号的字符串,可以通过将字符串相邻放置来执行连接:

mysql> SELECT 'My' 'S' 'QL'; -> 'MySQL'

如果从 mysql 客户端中调用 CONCAT(),则二进制字符串结果将使用十六进制表示法显示,具体取决于 --binary-as-hex 的值。

● CONCAT_WS(separator,str1,str2,...)

CONCAT_WS() 表示用分隔符连接,是 CONCAT() 的一种特殊形式。第一个参数是其余参数的分隔符。分隔符添加在要连接的字符串之间。分隔符可以是字符串。如果分隔符为 NULL,则结果为 NULL。

mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name'); -> 'First name,Second name,Last Name'mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name'); -> 'First name,Last Name'

CONCAT_WS() 不忽略空(零长度)字符串。但是,它会跳过分隔符参数之后的任何 NULL 值。

● ELT(N,str1,str2,str3,...)

ELT() 返回字符串列表的第 N 个元素:如果 N = 1,则返回 str1;如果 N = 2,则返回 str2,依此类推。如果 N 小于 1 或大于参数数量,则返回 NULL。ELT() 是对 FIELD() 函数的补充。

mysql> SELECT ELT(1, 'Aa', 'Bb', 'Cc', 'Dd'); -> 'Aa'mysql> SELECT ELT(4, 'Aa', 'Bb', 'Cc', 'Dd'); -> 'Dd'

● EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

返回一个字符串,对于值 bits 中设置为 1 的每一位,会得到一个 on 字符串,对于值中设置为 0 的每一位,会得到一个 off 字符串。从右到左(从低位到高位)检查 bits 中的位。字符串从左到右添加到结果中,由 separator 字符串分隔(默认为逗号字符 ,)。检查的位数由 number_of_bits 给出,如果未指定,则默认值为 64。如果大于 64,则 number_of_bits 会自动缩减为 64。它被视为无符号整数,因此 −1 实际效果与 64 相同。

mysql> SELECT EXPORT_SET(5,'Y','N',',',4); -> 'Y,N,Y,N'mysql> SELECT EXPORT_SET(6,'1','0',',',10); -> '0,1,1,0,0,0,0,0,0,0'

● FIELD(str,str1,str2,str3,...)

返回 str 在 str1, str2, str3, ... 列表中的索引(位置)。如果找不到 str,则返回 0。

如果 FIELD() 的所有参数都是字符串,则将所有参数作为字符串进行比较。如果所有参数都是数字,则它们将作为数字进行比较。否则,参数将作为双精度类型进行比较。

如果 str 为 NULL,则返回值为 0,因为 NULL 无法与任何值进行相等比较。FIELD() 是对 ELT() 函数的补充。

mysql> SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff'); -> 2mysql> SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff'); -> 0

官方文档:

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

上一篇:软件测试培训之互联网Web测试用例设计方法
下一篇:软件测试培训之测试工程师面试心得
相关文章

 发表评论

暂时没有评论,来抢沙发吧~