MYSQL的字符串函数具体用法

53次阅读
没有评论

共计 6931 个字符,预计需要花费 18 分钟才能阅读完成。

本篇内容介绍了“MYSQL 的字符串函数具体用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

对于针对字符串位置的操作,第一个位置被标记为 1。

ASCII(str)
返回字符串 str 的最左面字符的 ASCII 代码值。如果 str 是空字符串,返回 0。如果 str 是 NULL,返回 NULL。
mysql select ASCII(2
– 50
mysql select ASCII(2);
– 50
mysql select ASCII(dx
– 100
也可参见 ORD()函数。

ORD(str)
如果字符串 str 最左面字符是一个多字节字符,通过以格式 ((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code…] 返回字符的 ASCII 代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与 ASCII()函数返回的相同值。
mysql select ORD(2
– 50

CONV(N,from_base,to_base)
在不同的数字基之间变换数字。返回数字 N 的字符串数字,从 from_base 基变换为 to_base 基,如果任何参数是 NULL,返回 NULL。参数 N 解释为一个整数,但是可以指定为一个整数或一个字符串。最小基是 2 且最大的基是 36。如果 to_base 是一个负数,N 被认为是一个有符号数,否则,N 被当作无符号数。CONV 以 64 位点精度工作。
mysql select CONV(a ,16,2);
– 1010
mysql select CONV(6E ,18,8);
– 172
mysql select CONV(-17,10,-18);
– -H
mysql select CONV(10+ 10 + 10 +0xa,10,10);
– 40

BIN(N)
返回二进制值 N 的一个字符串表示,在此 N 是一个长整数 (BIGINT) 数字,这等价于 CONV(N,10,2)。如果 N 是 NULL,返回 NULL。
mysql select BIN(12);
– 1100

OCT(N)
返回八进制值 N 的一个字符串的表示,在此 N 是一个长整型数字,这等价于 CONV(N,10,8)。如果 N 是 NULL,返回 NULL。
mysql select OCT(12);
– 14

HEX(N)
返回十六进制值 N 一个字符串的表示,在此 N 是一个长整型 (BIGINT) 数字,这等价于 CONV(N,10,16)。如果 N 是 NULL,返回 NULL。
mysql select HEX(255);
– FF

CHAR(N,…)
CHAR()将参数解释为整数并且返回由这些整数的 ASCII 代码字符组成的一个字符串。NULL 值被跳过。
mysql select CHAR(77,121,83,81, 76
– MySQL
mysql select CHAR(77,77.3, 77.3
– MMM

CONCAT(str1,str2,…)
返回来自于参数连结的字符串。如果任何参数是 NULL,返回 NULL。可以有超过 2 个的参数。一个数字参数被变换为等价的字符串形式。
mysql select CONCAT(My , S , QL
– MySQL
mysql select CONCAT(My , NULL, QL
– NULL
mysql select CONCAT(14.3);
– 14.3

LENGTH(str)

OCTET_LENGTH(str)

CHAR_LENGTH(str)

CHARACTER_LENGTH(str)
返回字符串 str 的长度。
mysql select LENGTH(text
– 4
mysql select OCTET_LENGTH(text
– 4

注意,对于多字节字符,其 CHAR_LENGTH()仅计算一次。

LOCATE(substr,str)

POSITION(substr IN str)
返回子串 substr 在字符串 str 第一个出现的位置,如果 substr 不是在 str 里面,返回 0.
mysql select LOCATE(bar , foobarbar
– 4
mysql select LOCATE(xbar , foobar
– 0

该函数是多字节可靠的。
LOCATE(substr,str,pos)
返回子串 substr 在字符串 str 第一个出现的位置,从位置 pos 开始。如果 substr 不是在 str 里面,返回 0。
mysql select LOCATE(bar , foobarbar ,5);
– 7

这函数是多字节可靠的。

INSTR(str,substr)
返回子串 substr 在字符串 str 中的第一个出现的位置。这与有 2 个参数形式的 LOCATE()相同,除了参数被颠倒。
mysql select INSTR(foobarbar , bar
– 4
mysql select INSTR(xbar , foobar
– 0

这函数是多字节可靠的。

LPAD(str,len,padstr)
返回字符串 str,左面用字符串 padstr 填补直到 str 是 len 个字符长。
mysql select LPAD(hi ,4, ??
– ??hi

RPAD(str,len,padstr)
返回字符串 str,右面用字符串 padstr 填补直到 str 是 len 个字符长。
mysql select RPAD(hi ,5, ?
– hi???

LEFT(str,len)
返回字符串 str 的最左面 len 个字符。
mysql select LEFT(foobarbar , 5);
– fooba

该函数是多字节可靠的。

RIGHT(str,len)
返回字符串 str 的最右面 len 个字符。
mysql select RIGHT(foobarbar , 4);
– rbar

该函数是多字节可靠的。

SUBSTRING(str,pos,len)

SUBSTRING(str FROM pos FOR len)

MID(str,pos,len)
从字符串 str 返回一个 len 个字符的子串,从位置 pos 开始。使用 FROM 的变种形式是 ANSI SQL92 语法。
mysql select SUBSTRING(Quadratically ,5,6);
– ratica

该函数是多字节可靠的。

SUBSTRING(str,pos)

SUBSTRING(str FROM pos)
从字符串 str 的起始位置 pos 返回一个子串。
mysql select SUBSTRING(Quadratically ,5);
– ratically
mysql select SUBSTRING(foobarbar FROM 4);
– barbar

该函数是多字节可靠的。

SUBSTRING_INDEX(str,delim,count)
返回从字符串 str 的第 count 个出现的分隔符 delim 之后的子串。如果 count 是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果 count 是负数,返回最后的分隔符到右边的所有字符(从右边数)。
mysql select SUBSTRING_INDEX(www.mysql.com , . , 2);
– www.mysql
mysql select SUBSTRING_INDEX(www.mysql.com , . , -2);
– mysql.com

该函数对多字节是可靠的。

LTRIM(str)
返回删除了其前置空格字符的字符串 str。
mysql select LTRIM(barbar
– barbar

RTRIM(str)
返回删除了其拖后空格字符的字符串 str。
mysql select RTRIM(barbar
– barbar

该函数对多字节是可靠的。
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
返回字符串 str,其所有 remstr 前缀或后缀被删除了。如果没有修饰符 BOTH、LEADING 或 TRAILING 给出,BOTH 被假定。如果 remstr 没被指定,空格被删除。
mysql select TRIM(bar
– bar
mysql select TRIM(LEADING x FROM xxxbarxxx
– barxxx
mysql select TRIM(BOTH x FROM xxxbarxxx
– bar
mysql select TRIM(TRAILING xyz FROM barxxyz
– barx

该函数对多字节是可靠的。

SOUNDEX(str)
返回 str 的一个同音字符串。听起来“大致相同”的 2 个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是 4 个字符,但是 SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用 SUBSTRING()得到一个“标准”的 同音串。所有非数字字母字符在给定的字符串中被忽略。所有在 A - Z 之外的字符国际字母被当作元音。
mysql select SOUNDEX(Hello
– H400
mysql select SOUNDEX(Quadratically
– Q36324

SPACE(N)
返回由 N 个空格字符组成的一个字符串。
mysql select SPACE(6);

REPLACE(str,from_str,to_str)
返回字符串 str,其字符串 from_str 的所有出现由字符串 to_str 代替。
mysql select REPLACE(www.mysql.com , w , Ww
– WwWwWw.mysql.com

该函数对多字节是可靠的。

REPEAT(str,count)
返回由重复 countTimes 次的字符串 str 组成的一个字符串。如果 count = 0,返回一个空字符串。如果 str 或 count 是 NULL,返回 NULL。
mysql select REPEAT(MySQL , 3);
– MySQLMySQLMySQL

REVERSE(str)
返回颠倒字符顺序的字符串 str。
mysql select REVERSE(abc
– cba

该函数对多字节可靠的。

INSERT(str,pos,len,newstr)
返回字符串 str,在位置 pos 起始的子串且 len 个字符长得子串由字符串 newstr 代替。
mysql select INSERT(Quadratic , 3, 4, What
– QuWhattic

该函数对多字节是可靠的。

ELT(N,str1,str2,str3,…)
如果 N = 1,返回 str1,如果 N = 2,返回 str2,等等。如果 N 小于 1 或大于参数个数,返回 NULL。ELT()是 FIELD()反运算。
mysql select ELT(1, ej , Heja , hej , foo
– ej
mysql select ELT(4, ej , Heja , hej , foo
– foo

FIELD(str,str1,str2,str3,…)
返回 str 在 str1, str2, str3, … 清单的索引。如果 str 没找到,返回 0。FIELD()是 ELT()反运算。
mysql select FIELD(ej , Hej , ej , Heja , hej , foo
– 2
mysql select FIELD(fo , Hej , ej , Heja , hej , foo
– 0

FIND_IN_SET(str,strlist)
如果字符串 str 在由 N 子串组成的表 strlist 之中,返回一个 1 到 N 的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为 SET 的列,FIND_IN_SET()函数被优化而使用位运算!如果 str 不是在 strlist 里面或如果 strlist 是空字符串,返回 0。如果任何一个参数是 NULL,返回 NULL。如果第一个参数包含一个“,”,该函数将工作不正常。
mysql SELECT FIND_IN_SET(b , a,b,c,d
– 2

MAKE_SET(bits,str1,str2,…)
返回一个集合 (包含由“,”字符分隔的子串组成的一个字符串),由相应的位在 bits 集合中的的字符串组成。str1 对应于位 0,str2 对应位 1,等等。在 str1, str2, … 中的 NULL 串不添加到结果中。
mysql SELECT MAKE_SET(1, a , b , c
– a
mysql SELECT MAKE_SET(1 | 4, hello , nice , world
– hello,world
mysql SELECT MAKE_SET(0, a , b , c

EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
返回一个字符串,在这里对于在“bits”中设定每一位,你得到一个“on”字符串,并且对于每个复位 (reset) 的位,你得到一个“off”字符串。每个字符串用“separator”分隔 (缺省“,”),并且只有“bits”的“number_of_bits”(缺省 64) 位被使用。
mysql select EXPORT_SET(5, Y , N , , ,4)
– Y,N,Y,N

LCASE(str)

LOWER(str)
返回字符串 str,根据当前字符集映射 (缺省是 ISO-8859-1 Latin1) 把所有的字符改变成小写。该函数对多字节是可靠的。
mysql select LCASE(QUADRATICALLY
– quadratically

UCASE(str)

UPPER(str)
返回字符串 str,根据当前字符集映射 (缺省是 ISO-8859-1 Latin1) 把所有的字符改变成大写。该函数对多字节是可靠的。
mysql select UCASE(Hej
– HEJ

该函数对多字节是可靠的。

LOAD_FILE(file_name)
读入文件并且作为一个字符串返回文件内容。文件必须在服务器上,你必须指定到文件的完整路径名,而且你必须有 file 权限。文件必须所有内容都是可读的并且小于 max_allowed_packet。如果文件不存在或由于上面原因之一不能被读出,函数返回 NULL。
mysql UPDATE table_name
SET blob_column=LOAD_FILE(/tmp/picture)
WHERE id=1;

MySQL 必要时自动变换数字为字符串,并且反过来也如此:

mysql SELECT 1+ 1
– 2
mysql SELECT CONCAT(2, test
– 2 test

如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到 CONCAT()。

如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。

IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL()返回 expr1,否则它返回 expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
mysql select IFNULL(1,0);
       – 1
mysql select IFNULL(0,10);
       – 0
mysql select IFNULL(1/0,10);
       – 10
mysql select IFNULL(1/0, yes
       – yes

IF(expr1,expr2,expr3)
如果 expr1 是 TRUE(expr1 ;0 且 expr1 ;NULL),那么 IF()返回 expr2,否则它返回 expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。
mysql select IF(1 2,2,3);
       – 3
mysql select IF(1 2, yes , no
– yes
mysql select IF(strcmp( test , test1), yes , no
       – no

expr1 作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。

mysql select IF(0.1,1,0);
       – 0
mysql select IF(0.1 ;0,1,0);
       – 1

在上面的第一种情况中,IF(0.1)返回 0,因为 0.1 被变换到整数值, 导致测试 IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result …] [ELSE result] END

CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END
第一个版本返回 result,其中 value=compare-value。第二个版本中如果第一个条件为真,返回 result。如果没有匹配的 result 值,那么结果在 ELSE 后的 result 被返回。如果没有 ELSE 部分,那么 NULL 被返回。
mysql SELECT CASE 1 WHEN 1 THEN one WHEN 2 THEN two ELSE more END;
      – one
mysql SELECT CASE WHEN 1 0 THEN true ELSE false END;
      – true
mysql SELECT CASE BINARY B when a then 1 when b then 2 END;
      – NULL

“MYSQL 的字符串函数具体用法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计6931字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)