mysql中的字符串操作
- 格式:doc
- 大小:38.50 KB
- 文档页数:6
在MySQL中使用正则表达式进行字符串匹配正则表达式在文本处理中起着重要的作用,能够方便地进行字符串的搜索、匹配、替换等操作。
MySQL作为一种常用的关系型数据库,也提供了对正则表达式的支持,使得在MySQL中进行字符串匹配变得更加便捷。
本文将介绍在MySQL 中使用正则表达式进行字符串匹配的方法和应用。
1. 正则表达式的基本语法正则表达式是一种用于描述字符模式的工具,它使用一些特殊字符和字符组合来描述要匹配的字符串。
在MySQL中,正则表达式的基本语法如下:- `.`: 匹配任意一个字符;- `*`: 匹配前一个字符0次或更多次;- `+`: 匹配前一个字符1次或更多次;- `?`: 匹配前一个字符0次或1次;- `[]`: 匹配括号中任意一个字符;- `[^]`: 匹配除了括号中的字符之外的任意一个字符;- `|`: 匹配两个或多个表达式之一;- `^`: 匹配字符串的开头;- `$`: 匹配字符串的结尾。
2. MySQL中使用正则表达式进行匹配在MySQL中,可以使用`REGEXP`或`RLIKE`来进行正则表达式的匹配操作。
这两个关键字的作用是相同的,可以互换使用。
示例1:匹配以"a"开头的字符串```SELECT * FROM table_name WHERE column_name REGEXP '^a';```示例2:匹配以"ing"结尾的字符串```SELECT * FROM table_name WHERE column_name RLIKE 'ing$';```示例3:匹配包含"abc"的字符串```SELECT * FROM table_name WHERE column_name REGEXP 'abc';```示例4:匹配以"a"或"b"开头的字符串```SELECT * FROM table_name WHERE column_name RLIKE '^(a|b)';```3. MySQL中的正则表达式函数除了使用`REGEXP`或`RLIKE`关键字进行匹配操作之外,MySQL还提供了一些内置函数,用于更加灵活地处理和操作字符串。
mysql 匹配字符串的方法一、引言在MySQL中,字符串匹配是一种常见的操作,用于查找、替换或比较字符串数据。
本篇文章将介绍几种常用的方法,帮助您在MySQL 中高效地进行字符串匹配。
二、字符串匹配方法1. LIKE运算符LIKE运算符是MySQL中最常用的字符串匹配方法之一。
它允许您使用通配符来查找包含特定模式的字符串。
常用的通配符有百分号(%)表示任意字符出现任意次数,下划线(_)表示单个字符,和方括号([])内的字符集合。
例如:```scssSELECT * FROM table_name WHERE column_name LIKE'%pattern%';```上述语句将返回column_name中包含指定模式的所有字符串。
2. REGEXP运算符REGEXP运算符用于执行正则表达式匹配。
它提供了更强大的字符串匹配功能,可以匹配更复杂的模式。
例如:```sqlSELECT * FROM table_name WHERE column_name REGEXP'pattern';```上述语句将返回column_name中与指定正则表达式模式匹配的所有字符串。
3. BINARY运算符BINARY运算符用于区分大小写匹配。
在某些情况下,您可能希望将字符串视为大小写敏感进行匹配。
例如:```sqlSELECT * FROM table_name WHERE BINARY column_name ='pattern';```上述语句将返回column_name中与指定模式完全匹配(忽略大小写)的所有字符串。
4. 函数匹配方法除了运算符之外,MySQL还提供了许多字符串函数,可用于匹配字符串。
常用的函数包括LIKE BINARY、REGEXP_LIKE、STRPOS、SUBSTRING_INDEX等。
这些函数提供了更多的灵活性和功能,以满足不同的匹配需求。
MySQL中的字符串处理函数和技巧在数据库管理系统中,字符串处理是非常常见和重要的操作之一。
MySQL作为最受欢迎的关系型数据库管理系统之一,提供了许多强大的字符串处理函数和技巧,方便用户对数据进行灵活的操作和处理。
本文将介绍MySQL中常用的字符串处理函数和技巧,以及它们的应用场景。
一、字符串连接和拼接1. CONCAT函数CONCAT函数是MySQL中最常用的字符串连接函数之一。
它可以将多个字符串拼接在一起,并返回一个新的字符串。
例如,我们有一个students表,其中包含了学生的姓名和年龄。
我们可以使用CONCAT函数将姓名和年龄拼接在一起,并用逗号进行分隔。
SELECT CONCAT(name, ', ', age) AS info FROM students;这条SQL语句将返回一个新的列info,其中包含了学生的姓名和年龄,如"John, 20"。
2. CONCAT_WS函数CONCAT_WS函数类似于CONCAT函数,不同之处在于它可以指定一个分隔符作为参数。
这个分隔符将在拼接字符串时插入到每个字符串之间。
例如,我们有一个employees表,其中包含了员工的名字、年龄和职位。
我们可以使用CONCAT_WS函数将这些信息拼接在一起,并用逗号进行分隔。
SELECT CONCAT_WS(', ', name, age, position) AS info FROM employees;这条SQL语句将返回一个新的列info,其中包含了员工的名字、年龄和职位,如"John, 30, Manager"。
二、字符串截取和替换1. SUBSTRING函数SUBSTRING函数可以用来截取字符串的一部分。
它需要指定需要截取的字符串、起始位置和截取长度作为参数。
例如,我们有一个message表,其中包含了用户的留言内容。
如果我们只想获取留言的前10个字符,可以使用SUBSTRING函数。
MySQL中的字符串处理函数在数据库管理系统中,字符串的处理是一个非常常见的任务。
MySQL作为最流行的关系数据库管理系统之一,提供了许多强大的字符串处理函数,用于方便地处理和操作字符串。
本文将介绍MySQL中的一些常用的字符串处理函数,并探讨它们的用途和应用场景。
1. 字符串长度函数在对字符串进行处理时,有时需要知道字符串的长度。
MySQL提供了一个字符串长度函数LENGTH,用于返回字符串的长度。
例如,假设有一个名为"users"的表,其中有一个名为"name"的字段,存储了用户的姓名。
我们可以使用如下的SQL语句,获取每个用户姓名的长度:```sqlSELECT name, LENGTH(name) AS name_length FROM users;```2. 字符串连接函数有时我们需要将多个字符串连接在一起,MySQL提供了一个字符串连接函数CONCAT,用于实现字符串的连接。
例如,假设有一个名为"products"的表,其中有一个名为"name"的字段,存储了产品的名称,另外还有一个名为"price"的字段,存储了产品的价格。
我们可以使用如下的SQL语句,将产品的名称和价格连接在一起,并使用"-"作为连接符:```sqlSELECT CONCAT(name, '-', price) AS product_info FROM products;```3. 字符串截取函数有时候我们需要从字符串中提取部分内容,MySQL提供了两个字符串截取函数SUBSTRING和SUBSTR,用于实现字符串的截取。
例如,假设有一个名为"emails"的表,其中有一个名为"email"的字段,存储了用户的电子邮箱地址。
我们可以使用如下的SQL语句,提取每个邮箱地址的用户名部分:```sqlSELECT SUBSTRING_INDEX(email, '@', 1) AS username FROM emails;```4. 字符串替换函数有时候我们需要对字符串中的某个特定字符进行替换,MySQL提供了一个字符串替换函数REPLACE,用于实现字符串的替换。
ASCII(str)返回字符串str的第一个字符的ASCII值(str是空串时返回0)mysql> select ASCII(‟2′);-> 50mysql> select ASCII(2);-> 50mysql> select ASCII(‟dete‟);-> 100ORD(str)如果字符串str句首是单字节返回与ASCII()函数返回的相同值。
如果是一个多字节字符,以格式返回((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]mysql> select ORD(‟2′);-> 50CONV(N,from_base,to_base)对数字N进制转换,并转换为字串返回(任何参数为NULL时返回NULL,进制范围为2-36进制,当to_base是负数时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))mysql> select BIN(12);-> …1100′OCT(N)把N转为八进制值并以字串返回(N是BIGINT数字,等价于CONV(N,10,8))mysql> select OCT(12);-> …14′HEX(N)把N转为十六进制并以字串返回(N是BIGINT数字,等价于CONV(N,10,16))mysql> select HEX(255);-> …FF‟CHAR(N,…)返回由参数N,…对应的ASCII代码字符组成的一个字串(参数是N,…是数字序列,NULL值被跳过)mysql> select CHAR(77,121,83,81,‟76′);-> …MySQL‟mysql> select CHAR(77,77.3,‟77.3′);-> …MMM‟CONCA T(str1,str2,…)把参数连成一个长字符串并返回(任何参数是NULL时返回NULL)mysql> select CONCA T(‟My‟, …S‟, …QL‟);-> …MySQL‟mysql> select CONCA T(‟My‟, NULL, …QL‟);-> NULLmysql> select CONCA T(14.3);-> …14.3′LENGTH(str)OCTET_LENGTH(str)CHAR_LENGTH(str)CHARACTER_LENGTH(str)返回字符串str的长度(对于多字节字符CHAR_LENGTH仅计算一次)mysql> select LENGTH(‟text‟);-> 4mysql> select OCTET_LENGTH(‟text‟);-> 4LOCA TE(substr,str)POSITION(substr IN str)返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)mysql> select LOCA TE(‟bar‟, …foobarbar‟);-> 4mysql> select LOCA TE(‟xbar‟, …foobar‟);-> 0LOCA TE(substr,str,pos)返回字符串substr在字符串str的第pos个位置起第一次出现的位置(str不包含substr时返回0)mysql> select LOCA TE(‟bar‟, …foobarbar‟,5);-> 7INSTR(str,substr)返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)mysql> select INSTR(‟foobarbar‟, …bar‟);-> 4mysql> select INSTR(‟xbar‟, …foobar‟);-> 0LPAD(str,len,padstr)用字符串padstr填补str左端直到字串长度为len并返回mysql> select LPAD(‟hi‟,4,‟??‟);-> …??hi‟RPAD(str,len,padstr)用字符串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的位置pos起len个字符(使用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为正数时返回左端,否则返回右端子串)mysql> select SUBSTRING_INDEX(‟‟, ….‟, 2);-> …www.mysql‟mysql> select SUBSTRING_INDEX(‟‟, ….‟, -2);-> …‟LTRIM(str)返回删除了左空格的字符串strmysql> se lect LTRIM(‟ barbar‟);-> …barbar‟RTRIM(str)返回删除了右空格的字符串strmysql> select RTRIM(‟barbar …);-> …barbar‟TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)返回前缀或后缀remstr被删除了的字符串str(位置参数默认BOTH,remstr默认值为空格) mysql> select TRIM(‟ bar …);-> …bar‟my sql> 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的一个同音字符串(听起来“大致相同”字符串有相同的同音字符串,非数字字母字符被忽略,在A-Z外的字母被当作元音)mysq l> select SOUNDEX(‟Hello‟);-> (400)mysql> select SOUNDEX(‟Quadratically‟);-> (36324)SPACE(N)返回由N个空格字符组成的一个字符串mysql> select SPACE(6);-> … …REPLACE(str,from_str,to_str)用字符串to_str替换字符串str中的子串from_str并返回mysql> select REPLACE(‟‟, …w‟, …Ww‟);-> …‟REPEA T(str,count)返回由count个字符串str连成的一个字符串(任何参数为NULL时返回NULL,count<=0时返回一个空字符串)mysql> select REPEA T(‟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个字符串(N小于1或大于参数个数返回NULL)mysql> select ELT(1, …ej‟, …Heja‟, …hej‟, …foo‟);-> …ej‟mysql> select ELT(4, …ej‟, …Heja‟, …hej‟, …foo‟);-> …foo‟FIELD(str,str1,str2,str3,…)返回str等于其后的第N个字符串的序号(如果str没找到返回0)mysql> select FIELD(‟ej‟, …Hej‟, …ej‟, …Heja‟, …hej‟, …foo‟);-> 2mysql> select FIELD(‟fo‟, …Hej‟, …ej‟, …Heja‟, …hej‟, …foo‟);-> 0FIND_IN_SET(str,strlist)返回str在字符串集strlist中的序号(任何参数是NULL则返回NULL,如果str没找到返回0,参数1包含”,”时工作异常)mysql> SELECT FIND_IN_SET(‟b',‟a,b,c,d‟);-> 2MAKE_SET(bits,str1,str2,…)把参数1的数字转为二进制,假如某个位置的二进制位等于1,对应位置的字串选入字串集并返回(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排列字符串集,只有当位等于1时插入字串on,否则插入off(separator默认值”,”,number_of_bits参数使用时长度不足补0而过长截断)mysql> select EXPORT_SET(5,‟Y',‟N',‟,',4)-> Y,N,Y,NLCASE(str)LOWER(str)返回小写的字符串strmysql> select LCASE(‟QUADRA TICALLY‟);-> …quadratically‟UCASE(str)UPPER(str)返回大写的字符串strmysql> select UCASE(‟quadratically‟);-> …QUADRA TICALLY‟LOAD_FILE(file_name)读入文件并且作为一个字符串返回文件内容(文件无法找到,路径不完整,没有权限,长度大于max_allowed_packet会返回NULL)mysql> UPDA TE table_name SET blob_column=LOAD_FILE(”/tmp/picture”) WHERE id=1;数学函数ABS(N)返回N的绝对值mysql> select ABS(2);-> 2mysql> select ABS(-32);-> 32SIGN(N)返回参数的符号(为-1、0或1)mysql> select SIGN(-32);-> -1mysql> select SIGN(0);-> 0mysql> select SIGN(234);-> 1MOD(N,M)取模运算,返回N被M除的余数(同%操作符)mysql> select MOD(234, 10);-> 4mysql> select 234 % 10;-> 4mysql> select MOD(29,9);-> 2FLOOR(N)返回不大于N的最大整数值mysql> select FLOOR(1.23);-> 1mysql> select FLOOR(-1.23);-> -2CEILING(N)返回不小于N的最小整数值mysql> select CEILING(1.23);-> 2mysql> select CEILING(-1.23);-> -1ROUND(N,D)返回N的四舍五入值,保留D位小数(D的默认值为0)mysql> select ROUND(-1.23);-> -1mysql> select ROUND(-1.58);-> -2mysql> select ROUND(1.58);-> 2mysql> select ROUND(1.298, 1); -> 1.3mysql> select ROUND(1.298, 0); -> 1EXP(N)返回值e的N次方(自然对数的底) mysql> select EXP(2);-> 7.389056mysql> select EXP(-2);-> 0.135335LOG(N)返回N的自然对数mysql> select LOG(2);-> 0.693147mysql> select LOG(-2);-> NULLLOG10(N)返回N以10为底的对数mysql> select LOG10(2);-> 0.301030mysql> select LOG10(100);-> 2.000000mysql> select LOG10(-100);-> NULLPOW(X,Y)POWER(X,Y)返回值X的Y次幂mysql> select POW(2,2);-> 4.000000mysql> select POW(2,-2);-> 0.250000SQRT(N)返回非负数N的平方根mysql> select SQRT(4);-> 2.000000mysql> select SQRT(20);-> 4.472136PI()返回圆周率mysql> select PI();-> 3.141593COS(N)返回N的余弦值mysql> select COS(PI());-> -1.000000SIN(N)返回N的正弦值mysql> select SIN(PI());-> 0.000000TAN(N)返回N的正切值mysql> select TAN(PI()+1);-> 1.557408ACOS(N)返回N反余弦(N是余弦值,在-1到1的范围,否则返回NULL) mysql> select ACOS(1);-> 0.000000mysql> select ACOS(1.0001);-> NULLmysql> select ACOS(0);-> 1.570796ASIN(N)返回N反正弦值mysql> select ASIN(0.2);-> 0.201358mysql> select ASIN(‟foo‟);-> 0.000000A TAN(N)返回N的反正切值mysql> select A TAN(2);-> 1.107149mysql> select A TAN(-2);-> -1.107149A TAN2(X,Y)返回2个变量X和Y的反正切(类似Y/X的反正切,符号决定象限) mysql> select A TAN(-2,2);-> -0.785398mysql> select A TAN(PI(),0);-> 1.570796返回X的余切mysql> select COT(12);-> -1.57267341mysql> select COT(0);-> NULLRAND()RAND(N)返回在范围0到1.0内的随机浮点值(可以使用数字N作为初始值)mysql> select RAND();-> 0.5925mysql> select RAND(20);-> 0.1811mysql> select RAND(20);-> 0.1811mysql> select RAND();-> 0.2079mysql> select RAND();-> 0.7888DEGREES(N)把N从弧度变换为角度并返回mysql> select DEGREES(PI());-> 180.000000RADIANS(N)把N从角度变换为弧度并返回mysql> select RADIANS(90);-> 1.570796TRUNCA TE(N,D)保留数字N的D位小数并返回mysql> select TRUNCA TE(1.223,1);-> 1.2mysql> select TRUNCA TE(1.999,1);-> 1.9mysql> select TRUNCA TE(1.999,0);-> 1LEAST(X,Y,…)返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)mysql> select LEAST(2,0);-> 0mysql> select LEAST(34.0,3.0,5.0,767.0);mysql> select LEAST(”B”,”A”,”C”);-> “A”GREA TEST(X,Y,…)返回最大值(其余同LEAST())mysql> select GREA TEST(2,0);-> 2mysql> select GREA TEST(34.0,3.0,5.0,767.0);-> 767.0mysql> select GREA TEST(”B”,”A”,”C”);-> “C”时期时间函数DAYOFWEEK(date)返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DA YOFWEEK(‟1998-02-03′);-> 3WEEKDAY(date)返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。
mysql存储过程替换字符串的方法MySQL存储过程是一组预定义的SQL语句集合,可以在数据库中被多次调用。
存储过程可以用于执行一系列的操作,其中包括替换字符串的任务。
替换字符串的方法可以根据具体需求有所不同,下面我将展示几种常见的替换字符串的方法。
1. REPLACE函数REPLACE函数是MySQL中内置的字符串函数,用于替换指定字符串中的子串。
其语法如下:```REPLACE(string, from_string, to_string)```其中,string是待替换的字符串,from_string是待被替换的子串,to_string是替换后的子串。
例如,如果我们有一个名为`students`的表,其中有一个名为`description`的列,我们想要将其中的所有"男生"替换为"女生",可以使用如下的存储过程:```sqlDELIMITER //CREATE PROCEDURE replace_gender()BEGINUPDATE students SET description = REPLACE(description, '男生', '女生');END //DELIMITER ;```2. REGEXP_REPLACE函数REGEXP_REPLACE函数是MySQL中的正则表达式函数,用于基于正则表达式替换字符串的子串。
其语法如下:```REGEXP_REPLACE(string, pattern, to_string)```其中,string是待替换的字符串,pattern是待被替换的正则表达式,to_string是替换后的子串。
例如,如果我们有一个名为`students`的表,其中有一个名为`description`的列,我们想要将其中的所有"男生"替换为"女生",可以使用如下的存储过程:```sqlDELIMITER //CREATE PROCEDURE regexp_replace_gender()BEGINUPDATE students SET description =REGEXP_REPLACE(description, '男生', '女生');END //DELIMITER ;```需要注意的是,REGEXP_REPLACE函数在MySQL 8.0版本及以上才可用。
MySQL中的字符串处理函数及用法概述在MySQL中,对字符串进行处理和操作是十分常见的任务。
为了方便开发人员进行字符串处理,MySQL提供了丰富的字符串处理函数。
本文将介绍一些常用的MySQL字符串处理函数及其用法,帮助读者更好地运用这些函数来满足自己的需求。
1. CONCAT函数CONCAT函数用于将多个字符串连接在一起。
它接受任意数量的参数,每个参数可以是字符串、数字或其他表达式。
示例:SELECT CONCAT('Hello', 'World') AS result;输出:HelloWorldSELECT CONCAT('Today is ', 12, 'th') AS result;输出:Today is 12th2. SUBSTRING函数SUBSTRING函数用于获取一个字符串的子串。
它接受三个参数:原始字符串、开始位置和子串的长度。
如果省略第三个参数,则返回从开始位置到字符串末尾的子串。
示例:SELECT SUBSTRING('Hello World', 7) AS result;输出:WorldSELECT SUBSTRING('Hello World', 7, 3) AS result;输出:Wor3. REPLACE函数REPLACE函数用于将字符串中的一部分替换为另一部分。
它接受三个参数:原始字符串、要替换的字符串和替换后的字符串。
示例:SELECT REPLACE('Hello World', 'World', 'MySQL') AS result;输出:Hello MySQL4. UPPER和LOWER函数UPPER函数用于将字符串转换为大写,LOWER函数用于将字符串转换为小写。
示例:SELECT UPPER('hello') AS result;输出:HELLOSELECT LOWER('WORLD') AS result;输出:world5. TRIM函数TRIM函数用于移除字符串两侧的空格或其他指定字符。
mysql拼接字符串的方法使用MySQL进行字符串拼接是在数据库中将多个字符串连接成一个字符串的常用操作。
MySQL提供了几种方法来实现字符串的拼接,包括使用CONCAT函数、使用||运算符以及使用CONCAT_WS函数。
本文将详细介绍这些方法的使用。
一、使用CONCAT函数CONCAT函数是MySQL中用于拼接字符串的函数,它可以将多个字符串连接成一个字符串。
使用CONCAT函数的语法如下:CONCAT(string1, string2, string3, ...)其中,string1、string2、string3等参数表示要连接的字符串,可以是字符串常量、列名或表达式。
下面是一个示例:SELECT CONCAT('Hello', ' ', 'World') AS result;执行以上SQL语句,将返回结果为"Hello World"的一行。
除了连接字符串常量,我们还可以连接列名或表达式。
例如,假设有一个students表,包含id、name和age三列,我们可以使用以下SQL语句将name和age列连接成一个字符串:SELECT CONCAT(name, ' is ', age, ' years old.') AS result FROM students;执行以上SQL语句,将返回每一行中name、age列连接成的字符串。
二、使用||运算符在MySQL中,可以使用||运算符来实现字符串的拼接。
||运算符可以将两个字符串连接成一个字符串。
下面是一个示例:SELECT 'Hello' || ' ' || 'World' AS result;执行以上SQL语句,将返回结果为"Hello World"的一行。
类似于CONCAT函数,我们也可以使用列名或表达式进行字符串的拼接。
MySQL中的字符串处理函数和操作在MySQL数据库中,字符串处理是非常常见的操作。
无论是在开发应用程序还是进行数据分析,字符串处理函数都起到了至关重要的作用。
本文将介绍MySQL中常用的字符串处理函数和操作,帮助读者更好地理解和掌握这些功能。
一、字符拼接 CONCAT()函数字符拼接是字符串处理中的基本操作之一。
在MySQL中,可以通过CONCAT()函数将多个字符串进行拼接。
例如,假设有一个表"employees",其中包含了"first_name"和"last_name"两个字段,我们想要将这两个字段拼接成一个完整的姓名,可以使用以下语句:SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;在上述语句中,我们使用CONCAT()函数将"first_name"和"last_name"之间添加一个空格,得到完整的姓名。
使用"AS full_name"将结果命名为"full_name",方便后续使用。
二、字符串截取 SUBSTRING()函数在实际开发和数据分析中,经常需要从一个字符串中提取出部分内容。
此时可以使用SUBSTRING()函数来实现字符串的截取。
该函数的语法形式为:SUBSTRING(string, start, length)其中,"string"为待截取的字符串,"start"为起始位置,"length"为要截取的长度。
例如,我们有一个表"articles",其中包含了"content"字段,我们想要截取出其中的前100个字符,可以使用以下语句:SELECT SUBSTRING(content, 1, 100) AS excerpt FROM articles;在上述语句中,我们通过SUBSTRING()函数将"content"字段从第一个字符开始截取,截取长度为100个字符,并将结果命名为"excerpt"。
MySQL实现字符串的拼接,截取,替换,查找位置的操作MySQL字符串的拼接、截取、替换、查找位置。
常⽤的字符串函数:函数说明CONCAT(s1,s2,...)返回连接参数产⽣的字符串,⼀个或多个待拼接的内容,任意⼀个为NULL则返回值为NULL。
CONCAT_WS(x,s1,s2,...)返回多个字符串拼接之后的字符串,每个字符串之间有⼀个x。
SUBSTRING(s,n,len)、MID(s,n,len)两个函数作⽤相同,从字符串s中返回⼀个第n个字符开始、长度为len的字符串。
LEFT(s,n)、RIGHT(s,n)前者返回字符串s从最左边开始的n个字符,后者返回字符串s从最右边开始的n个字符。
INSERT(s1,x,len,s2)返回字符串s1,其⼦字符串起始于位置x,被字符串s2取代len个字符。
REPLACE(s,s1,s2)返回⼀个字符串,⽤字符串s2替代字符串s中所有的字符串s1。
LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1)三个函数作⽤相同,返回⼦字符串str1在字符串str中的开始位置(从第⼏个字符开始)。
FIELD(s,s1,s2,...)返回第⼀个与字符串s匹配的字符串的位置。
1、字符串的拼接1.1 CONCAT(s1,s2,...)函数返回连接参数产⽣的字符串,⼀个或多个待拼接的内容,任意⼀个为NULL则返回值为NULL。
SELECT CONCAT('现在的时间:',NOW()); -- 输出结果:现在的时间:2019-01-17 11:27:581.2 CONCAT_WS(x,s1,s2,...)函数返回多个字符串拼接之后的字符串,每个字符串之间有⼀个x。
SELECT CONCAT_WS(';','pan_junbiao的博客','KevinPan','pan_junbiao'); -- 输出结果:pan_junbiao的博客;KevinPan;pan_junbiao 2、字符串的截取2.1 SUBSTRING(s,n,len)、MID(s,n,len)函数两个函数作⽤相同,从字符串s中返回⼀个第n个字符开始、长度为len的字符串。
MySQL中的字符串比较与排序方法在MySQL中,字符串的比较和排序是非常常见且重要的操作。
字符串比较和排序的方法直接影响到查询结果的准确性和排序的正确性。
本文将对MySQL中的字符串比较和排序方法进行探讨和讲解。
1. 字符串的比较MySQL中的字符串比较主要涉及到两种比较方式:二进制比较和字符集比较。
1.1 二进制比较二进制比较是通过比较字符串中每个字符的ASCII码值来进行比较的。
在二进制比较中,MySQL会将字符串转换为二进制形式,并按照二进制进行比较。
例如,字符串"A"和字符串"a"在二进制比较中会被认为是不相等的。
可以使用BINARY关键字来强制使用二进制比较,例如:SELECT * FROM table WHERE binary column = 'abc';1.2 字符集比较字符集比较是基于MySQL定义的字符集进行的。
MySQL中的字符集涵盖了各种语言和字符编码,比如utf8, gbk, latin1等。
在字符集比较中,MySQL会将字符串根据字符集进行比较。
相同字符集下的比较是按字典序进行的。
不同字符集之间的比较结果可能会有所不同。
例如,在utf8字符集下,字符串"A"和"a"被认为是相等的,而在gbk字符集下,这两个字符串被认为是不相等的。
可以使用COLLATE关键字来设置字符集比较规则,例如:SELECT * FROM table WHERE column COLLATE utf8_bin = 'abc';2. 字符串的排序MySQL中的字符串排序可以使用ORDER BY关键字进行指定。
在字符串排序时,可以使用不同的排序规则来得到不同的排序结果。
2.1 二进制排序二进制排序是按照字符串的二进制形式进行排序的。
在二进制排序中,每个字符的ASCII值被用来进行排序。
字符集对二进制排序不起作用。
MySQL中字符串的处理方法MySQL是一种广泛使用的关系型数据库管理系统,其在存储和处理字符串方面具有强大的功能。
在实际应用中,我们经常会遇到需要对字符串进行处理的情况。
本文将介绍MySQL中字符串的处理方法,包括字符串连接、截取、替换、转换等常用操作。
一、字符串连接字符串连接是将多个字符串拼接为一个字符串的操作。
在MySQL中,可以使用字符串连接函数CONCAT来实现。
例如,假设有一个用户表,包含用户的姓和名的字段,我们可以使用如下SQL语句将姓和名连接起来作为一个完整的姓名:```SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM user;```上述SQL语句中,通过将姓和名之间添加一个空格来实现连接,使用AS关键字为连接后的字符串起一个别名。
二、字符串截取字符串截取是根据指定的位置从原字符串中提取子字符串的操作。
在MySQL 中,可以使用字符串截取函数SUBSTRING来实现。
SUBSTRING函数的语法为:```SUBSTRING(str, pos, len)```其中str是原字符串,pos是指定的位置,len是要截取的长度。
例如,假设有一个文章表,包含文章的标题字段,我们可以使用如下SQL语句截取标题的前10个字符:```SELECT SUBSTRING(title, 1, 10) AS short_title FROM article;```上述SQL语句中,将截取从位置1开始的长度为10个字符作为标题的子字符串,使用AS关键字为截取后的字符串起一个别名。
三、字符串替换字符串替换是将原字符串中的指定字符或子字符串替换为新的字符或子字符串的操作。
在MySQL中,可以使用字符串替换函数REPLACE来实现。
REPLACE 函数的语法为:```REPLACE(str, old_str, new_str)```其中str是原字符串,old_str是要替换的字符或子字符串,new_str是新的字符或子字符串。
MySQL中的字符串比较和排序方法MySQL是一种广泛使用的关系型数据库管理系统,它在各个领域都得到了广泛的应用。
在数据库中,字符串的比较和排序方法是非常重要的,它们直接影响着数据库的性能和查询的结果。
本文将探讨MySQL中的字符串比较和排序方法,帮助读者更好地理解和应用这些方法。
一、MySQL中的字符串比较在MySQL中,字符串的比较可以使用比较运算符(如"<"、">"、"=")或字符串函数进行。
最常用的比较运算符是"="和"<>",它们分别表示等于和不等于。
比如,可以使用以下语句进行字符串的等于比较:```sqlSELECT * FROM table WHERE column = 'string';```还可以使用LIKE运算符进行模糊匹配,这在实际应用中非常常见。
比如,可以使用以下语句进行字符串的模糊匹配:```sqlSELECT * FROM table WHERE column LIKE '%string%';```上述语句将查询满足包含"string"字符串的所有记录。
在LIKE运算符后面使用的通配符"%"表示任意长度的字符串。
还可以使用"_ "通配符代表一个字符。
除了比较运算符之外,MySQL还提供了许多字符串函数用于字符串的比较。
其中,最常用的是LOWER()和UPPER()函数,它们分别用于将字符串转换为小写和大写。
比如,可以使用以下语句进行字符串的大小写比较:```sqlSELECT * FROM table WHERE LOWER(column) = 'string';```在进行字符串的大小比较时,还可以使用ASCII()函数获取字符串的ASCII码值。
mysql中分割规律字符串-回复问题:MySQL中如何实现分割规律字符串?回答:在MySQL中,有时候我们需要根据某种规律来对字符串进行分割并提取出我们需要的数据。
这种情况下,我们可以使用一些MySQL内置的函数来实现字符串的分割操作。
MySQL提供了一些函数来处理字符串,其中包括SUBSTRING_INDEX、SUBSTRING、REGEXP_REPLACE等函数,这些函数可以帮助我们实现字符串的分割和提取。
下面我将具体介绍这些函数的用法。
1. SUBSTRING_INDEX函数:SUBSTRING_INDEX函数可以通过指定分隔符和分割位置,将一个字符串从左侧或右侧进行分割,并返回分割后的子字符串。
语法:SUBSTRING_INDEX(str,delimiter,count),其中str为要分割的字符串,delimiter为分隔符,count为分割位置。
例如,我们有一个字符串'[apple], [banana], [orange]',我们可以使用SUBSTRING_INDEX函数来分割出其中的水果名称。
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('[apple], [banana], [orange]', '[', -1), ']', 1) AS fruit;这个查询语句将返回结果'apple, banana, orange',即通过分割字符串获取到了水果名称。
2. SUBSTRING函数:SUBSTRING函数可以用来提取一个字符串中指定位置的子字符串。
语法:SUBSTRING(str,start,length),其中str为要提取的字符串,start 为起始位置,length为提取的长度。
例如,我们有一个字符串'[apple], [banana], [orange]',如果我们想提取出其中的水果名称apple,我们可以使用SUBSTRING函数来实现。
mysql字符串拼接的方法-回复“mysql字符串拼接的方法”在MySQL数据库中,字符串拼接是一个非常常见的操作,它可以帮助我们将多个字符串合并成一个更大的字符串。
在本文中,我们将一步一步地回答关于MySQL字符串拼接的方法,从基础概念开始,到具体的语法和示例。
让我们开始吧!1. 什么是字符串拼接?字符串拼接是指将多个字符串连接起来形成一个更大的字符串。
在MySQL中,可以使用函数和运算符来执行字符串拼接操作。
常用的字符串拼接方法有CONCAT函数、CONCAT_WS函数和运算符“”。
下面我们将详细探讨这些方法。
2. 使用CONCAT函数进行字符串拼接CONCAT函数是MySQL提供的一个用于拼接字符串的内置函数。
它可以接受任意数量的参数,并按照参数顺序将它们连接成一个字符串。
下面是使用CONCAT函数的示例:sqlSELECT CONCAT('Hello', ' ', 'World') AS result;这个SQL语句将返回一个字符串'Hello World'作为结果。
可以在CONCAT函数中使用任意数量的参数,它们将按照传入顺序依次连接起来。
3. 使用CONCAT_WS函数进行字符串拼接CONCAT_WS函数是CONCAT函数的一个变体,它使用指定的分隔符将多个字符串连接起来。
下面是使用CONCAT_WS函数的示例:sqlSELECT CONCAT_WS(',', 'Apple', 'Banana', 'Orange') AS result;这个SQL语句将返回一个字符串'Apple,Banana,Orange'作为结果。
可以看到,在CONCAT_WS函数中,第一个参数是分隔符,后面的参数是要连接的字符串。
4. 使用运算符“”进行字符串拼接在MySQL中,还可以使用运算符“”来进行字符串拼接。
mysql sql拆分字符串在MySQL中,可以使用内置的字符串函数来拆分字符串。
以下是一些常用的方法:1.使用SUBSTRING_INDEX()函数:sqlSELECT SUBSTRING_INDEX(column_name, delimiter, count) ASsplit_valueFROM table_name;其中,column_name是要拆分的列名,delimiter是分隔符,count是要返回的拆分部分的索引(从1开始)。
例如,如果要拆分列名为string_column的字符串,使用逗号作为分隔符,并返回第一个拆分部分,可以使用以下查询:sqlSELECT SUBSTRING_INDEX(string_column, ',', 1) AS split_valueFROM table_name;2.使用FIND_IN_SET()函数:如果你的字符串列中包含用逗号分隔的字符串,并且你想要根据逗号拆分它们,可以使用FIND_IN_SET()函数。
该函数会在一个逗号分隔的字符串列表中查找指定的值,并返回它的位置。
例如,假设你有一个名为string_column的列,其中包含用逗号分隔的字符串,你可以使用以下查询来拆分它们:sqlSELECT SUBSTRING_INDEX(SUBSTRING_INDEX(string_column, ',',numbers.n), ',', -1) AS split_valueFROM (SELECT1 n UNION ALL SELECT2UNION ALL SELECT3UNION ALLSELECT4) numbersWHEREFIND_IN_SET(SUBSTRING_INDEX(SUBSTRING_INDEX(string_column,',', numbers.n), ',', -1), string_column) > 0;这个查询使用了一个子查询来生成一个数字序列,然后使用SUBSTRING_INDEX()函数和FIND_IN_SET()函数来拆分字符串。
mysql常⽤字符串操作函数⼤全,以及实例测试表CREATE TABLE `string_test` (`id` int(11) NOT NULL auto_increment COMMENT '⽤户ID',`name` varchar(50) NOT NULL default '' COMMENT '名称',`job` varchar(23) NOT NULL COMMENT '⼯作',`sex` tinyint(1) NOT NULL default '1' COMMENT '性别',`hobby` varchar(100) character set utf8 collate utf8_unicode_ci default NULL COMMENT '爱好',PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;测试数据INSERT INTO `string_test` (`id`, `name`, `job`, `sex`, `hobby`) VALUES(1, 'tank', '农民⼯', 1, '军棋,游戏,fishing'),(2, 'zhang', 'DUCK', 0, 'fly,make firend'),(3, 'ying', 'no job', 1, 'flying,driving,testing'),(4, 'tankzhang', 'love your love', 1, 'i love you');mysql字符串操作函数1,UPPER和UCASE返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成⼤写。
注意:如果结果的长度大于服务器参数max_allow ed_pa cket,字符串值函数返回NU LL对于针对字符串位置的操作,第一个位置被标记为1。
A SCII(str)返回字符串str的最左面字符的ASCII代码值。
如果str是空字符串,返回0。
如果str是NULL,返回NUL L。
m ysql> sele ct AS CII(‟2′);-> 50mysq l> se lectASCII(2);-> 50mysq l> se lectASCII(‟dx‟);-> 100也可参见ORD()函数。
ORD(s tr)如果字符串s tr最左面字符是一个多字节字符,通过以格式((fi rst b yte A SCIIcode)*256+(seco nd by te AS CII c ode))[*256+thir d byt e ASC II co de…]返回字符的A SCII代码值来返回多字节字符代码。
如果最左面的字符不是一个多字节字符。
返回与A SCII()函数返回的相同值。
mys ql> s elect ORD(‟2′);-> 50Mo re…CONV(N,fro m_bas e,to_base)在不同的数字基之间变换数字。
返回数字N的字符串数字,从fr om_ba se基变换为to_b ase基,如果任何参数是NUL L,返回N ULL。
参数N解释为一个整数,但是可以指定为一个整数或一个字符串。
最小基是2且最大的基是36。
如果t o_bas e是一个负数,N被认为是一个有符号数,否则,N被当作无符号数。
MySQL查询结果集字符串操作之多⾏合并与单⾏分割前⾔我们在做项⽬写sql语句的时候,是否会遇到这样的场景,就是需要把查询出来的多列,按照字符串分割合并成⼀列显⽰,或者把存在数据库⾥⾯⽤逗号分隔的⼀列,查询分成多列呢,常见场景有,⽂章标签,需要吧查询多个标签合并成⼀列,等,需要怎么去实现呢,这就涉及到MySQL的字符串操作group_concat场景再现我想把查询多列数据合并成⼀列显⽰⽤逗号分隔就需要⽤到group_concat这个函数下⾯sql语句select r.ROLE_NAMEfrom t_user uright join t_user_role ur on ER_ID = ER_ID,t_role rwhere r.ROLE_ID = ur.ROLE_IDand ER_ID = 7ID为7的⽤户有两个⾓⾊,但是我现在想把它显⽰成⼀列,就需要⽤到字符串函数group_concat 如下sqlselect group_concat(r.ROLE_NAME)from t_user uright join t_user_role ur on ER_ID = ER_ID,t_role rwhere r.ROLE_ID = ur.ROLE_IDand ER_ID = 7;实现了我需要的功能当然group_concat函数默认使⽤逗号,进⾏连接,我们也可以⾃⼰指定分隔连击符如group_concat(name separator ';')select group_concat(r.ROLE_NAME separator ';')from t_user uright join t_user_role ur on ER_ID = ER_ID,t_role rwhere r.ROLE_ID = ur.ROLE_IDand ER_ID = 7;当然实际应⽤不单单这么简单,需要结合⼦查询使⽤,如下sql 查询⽤户详细信息,就包括⽤户⾓⾊信息,部门信息等select tu.*,d.DEPT_NAME,(select group_concat(r.ROLE_NAME)from t_user uleft join t_user_role ur on ER_ID = ER_ID,t_role rwhere r.ROLE_ID = ur.ROLE_IDand ER_ID = ER_ID) as rolesfrom t_user tuleft joint_dept don tu.DEPT_ID = d.DEPT_IDwhere ER_ID=7;substring_index(str,delim,count)场景在现某些业务表出于历史原因或性能原因,都使⽤了违反第⼀范式的设计模式。
mysql字符串排序原理MySQL是一种常见的关系型数据库管理系统,广泛应用于各种Web应用程序和企业级系统中。
在MySQL中,字符串排序是一个重要的操作,它能够帮助我们对字符串进行按照特定规则排序的操作。
本文将从MySQL字符串排序的原理进行阐述,帮助读者了解字符串排序的背后逻辑。
MySQL中的字符串排序是基于字符串的字符编码进行的。
在计算机中,每个字符都对应着一个特定的编码值。
在MySQL中,常用的字符编码方式包括ASCII、UTF-8等。
在进行字符串排序时,MySQL会根据字符编码的顺序来确定字符串的排序规则。
在MySQL中,字符串排序时会考虑以下几个因素:1. 字符集:字符集是字符编码的集合,不同的字符集对应着不同的字符编码。
MySQL支持多种字符集,如utf8、gbk等。
在进行字符串排序时,需要先确定所使用的字符集。
2. 排序规则:排序规则定义了在字符串排序中的字符比较方式。
在MySQL中,常见的排序规则有BIN、UTF8_BIN、UTF8_GENERAL_CI等。
BIN规则是一种区分大小写的二进制排序规则,而UTF8_BIN和UTF8_GENERAL_CI则是基于字符编码的排序规则,其中UTF8_GENERAL_CI规则会忽略字母的大小写。
3. 排序顺序:MySQL支持升序和降序两种排序顺序。
在进行字符串排序时,可以指定升序(ASC)或降序(DESC)。
在MySQL中,可以使用ORDER BY子句来指定排序规则。
例如,可以使用以下语句将一个表中的字符串列按照升序排序:SELECT column_name FROM table_name ORDER BY column_name ASC;在排序过程中,MySQL会按照以下步骤进行:1. 首先,MySQL会根据字符集确定每个字符的编码值。
2. 然后,MySQL会根据排序规则比较每个字符的编码值,以确定字符的排序顺序。
3. 最后,MySQL根据排序顺序将字符串进行排序。
update article set body = (REPLACE(body, '</div>', ' ')) where typeid=21用mysql update和replace在mysql中替换某一个字段的部分内容update users_settings set `ConfigValue` = replace(configvalue,' fromstr' 'tostr') where `ConfigName`='accesslist'对于针对字符串位置的操作,第一个位置被标记为1。
ASCII(str)返回字符串str的最左面字符的ASCII代码值。
如果str是空字符串,返回0。
如果str是NULL,返回NULL。
mysql> select ASCII('2'); -> 50mysql> select ASCII(2); -> 50mysql> 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'); -> 50CONV(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,; -> '172'mysql> select CONV(-17,10,-1; -> '-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,。
如果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'); -> 'M ySQL'mysql> select CHAR(77,77.3,'77.3'); -> 'M MM' CONCA T(str1,str2,...)返回来自于参数连结的字符串。
如果任何参数是NULL,返回NULL。
可以有超过2个的参数。
一个数字参数被变换为等价的字符串形式。
mysql> select CONCAT('M y', 'S', 'QL'); -> 'MySQL'mysql> select CONCA T('M y', NULL, 'QL'); -> NULLmysql> select CONCA T(14.3); -> '14.3'LENGTH(str)OCTET_LENGTH(str)CHAR_LENGTH(str)CHARACTER_LENGTH(str)返回字符串str的长度。
mysql> select LENGTH('text'); -> 4mysql> select OCTET_LENGTH('text'); -> 4注意,对于多字节字符,其CHAR_LENGTH()仅计算一次。
LOCATE(substr,str)POSITION(substr IN str)返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.mysql> select LOCA TE('bar', 'foobarbar'); -> 4mysql> select LOCA TE('xbar', 'foobar'); -> 0该函数是多字节可靠的。
LOCATE(substr,str,pos)返回子串substr在字符串str第一个出现的位置,从位置pos开始。
如果substr不是在str里面,返回0。
mysql> select LOCA TE('bar', 'foobarbar',5); -> 7这函数是多字节可靠的。
INSTR(str,substr)返回子串substr在字符串str中的第一个出现的位置。
这与有2个参数形式的LOCATE()相同,除了参数被颠倒。
mysql> select INSTR('foobarbar', 'bar'); -> 4mysql> 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('', '.', 2); -> 'www.mysql'mysql> select SUBSTRING_INDEX('', '.', -2); -> ''该函数对多字节是可靠的。
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被假定。