您的位置:新葡亰496net > 网络数据库 > 字符串处理函数,Mysql字符串处理函数详细介绍

字符串处理函数,Mysql字符串处理函数详细介绍

发布时间:2019-06-20 12:53编辑:网络数据库浏览(77)

    1.CONCAT函数

      这一篇文章主要总结开发过程中经常使用到的字符串处理函数,它们在处理字符串时非常有用,那么,总结起来有以下函数。

    COALESCE(columnname,string) 函数

    一、简明总结
    ASCII(char)        返回字符的ASCII码值
    BIT_LENGTH(str)      返回字符串的比特长度
    CONCAT(s1,s2…,sn)      将s1,s2…,sn连接成字符串
    CONCAT_WS(sep,s1,s2…,sn)  将s1,s2…,sn连接成字符串,并用sep字符间隔
    INSERT(str,x,y,instr)    将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
    FIND_IN_SET(str,list)   分析逗号分隔的list列表,如果发现str,返回str在list中的位置
    LCASE(str)或LOWER(str)   返回将字符串str中所有字符改变为小写后的结果
    LEFT(str,x)        返回字符串str中最左边的x个字符
    LENGTH(s)         返回字符串str中的字符数
    LTRIM(str)         从字符串str中切掉开头的空格
    POSITION(substr,str)    返回子串substr在字符串str中第一次出现的位置
    QUOTE(str)         用反斜杠转义str中的单引号

    一、简明总结
    ASCII(char)        返回字符的ASCII码值
    BIT_LENGTH(str)      返回字符串的比特长度
    CONCAT(s1,s2…,sn)      将s1,s2…,sn连接成字符串
    CONCAT_WS(sep,s1,s2…,sn)  将s1,s2…,sn连接成字符串,并用sep字符间隔
    INSERT(str,x,y,instr)    将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
    FIND_IN_SET(str,list)   分析逗号分隔的list列表,如果发现str,返回str在list中的位置
    LCASE(str)或LOWER(str)   返回将字符串str中所有字符改变为小写后的结果
    LEFT(str,x)        返回字符串str中最左边的x个字符
    LENGTH(s)         返回字符串str中的字符数
    LTRIM(str)         从字符串str中切掉开头的空格
    POSITION(substr,str)    返回子串substr在字符串str中第一次出现的位置
    QUOTE(str)         用反斜杠转义str中的单引号

    SELECT custid, country, region, city,
      country   N','   region   N','   city AS location
    FROM Sales.Customers;
    

    1,字符串串联运算符

      将 NULL 值作为字符串(用空字符串或其他字符串替换 NULL)- 接受一列输入值(字段)如果该字段为 NULL,则返回后面替换的字符串

    REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果
    REVERSE(str)        返回颠倒字符串str的结果
    RIGHT(str,x)        返回字符串str中最右边的x个字符
    RTRIM(str)         返回字符串str尾部的空格
    STRCMP(s1,s2)       比较字符串s1和s2
    TRIM(str)         去除字符串首部和尾部的所有空格
    UCASE(str)或UPPER(str)   返回将字符串str中所有字符转变为大写后的结果

    REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果
    REVERSE(str)        返回颠倒字符串str的结果
    RIGHT(str,x)        返回字符串str中最右边的x个字符
    RTRIM(str)         返回字符串str尾部的空格
    STRCMP(s1,s2)       比较字符串s1和s2
    TRIM(str)         去除字符串首部和尾部的所有空格
    UCASE(str)或UPPER(str)   返回将字符串str中所有字符转变为大写后的结果

    对有NULL 数据行加减也为NULL

    2,SUBSTRING提取子串

    1 SELECT custid,country,region,city,country N',' region N',' city AS location FROM Sales.Customers
    

    二、详细总结
    1.ASCII(str)
    返回值为字符串str 的最左字符的数值,即取得最左字符的ascii码。
    假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。
    ASCII()用于带有从 0到255的数值的字符。

    二、详细总结
    1.ASCII(str)
    返回值为字符串str 的最左字符的数值,即取得最左字符的ascii码。
    假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。
    ASCII()用于带有从 0到255的数值的字符。

     图片 1

    3,LEFT和RIGHT

    图片 2

    2.BIN(N)
    返回值为N的二进制值的字符串表示,即转为二进制。
    其中 N 为一个longlong (BIGINT) 数字。这等同于 CONV(N,10,2)。假如N 为NULL,则返回值为 NULL。

    2.BIN(N)
    返回值为N的二进制值的字符串表示,即转为二进制。
    其中 N 为一个longlong (BIGINT) 数字。这等同于 CONV(N,10,2)。假如N 为NULL,则返回值为 NULL。

    怎么解决呢 这里就用到了 CONCAT 函数

    4,LEN和DATALENGTH

    SELECT custid,country,region,city,country N',' COALESCE(region,N'q') N',' city AS location FROM Sales.Customers
    

    3.BIT_LENGTH(str)
    返回值为二进制的字符串str 长度。

    3.BIT_LENGTH(str)
    返回值为二进制的字符串str 长度。

    SELECT custid, country, region, city,
      country   COALESCE( N','   region, N'')   N','   city AS location
    FROM Sales.Customers;
    

    5,CHARINDEX函数

    图片 3

    4.CHAR(N,... [USING charset])
    CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。
    即将所有参数转为字符后连接在一起。

    4.CHAR(N,... [USING charset])
    CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。
    即将所有参数转为字符后连接在一起。

    CONCAT('A',NULL,'B') 接收一个连接字符串输入并主动替换null 为‘’字符串 结果就是 AB

    6,PATINDEX函数

    SUBSTRING(string,start,length)

    5.CHAR_LENGTH(str)
    返回值为字符串str 的长度,长度的单位为字符。

    5.CHAR_LENGTH(str)
    返回值为字符串str 的长度,长度的单位为字符。

    2.SUBSTRING函数

    7,REPLACE替换

      提取从指定位置开始,具有特定长度的字符串

    6.CHARACTER_LENGTH(str)
    CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

    6.CHARACTER_LENGTH(str)
    CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

    它可以从字符串提取一个子字符串

    8,REPLICATE复制字符串

    SELECT SUBSTRING('abcde',2,2);
    

    7.COMPRESS(string_to_compress)
    压缩一个字符串。

    7.COMPRESS(string_to_compress)
    压缩一个字符串。

    和c# 截取字符串用法一样 不过下标不是零开始

    9,STUFF函数

    图片 4

    8.CONCAT(str1,str2,...)
    返回结果为连接参数产生的字符串。

    8.CONCAT(str1,str2,...)
    返回结果为连接参数产生的字符串。

    SELECT SUBSTRING('abcde', 1, 3); -- 'abc'
    

    10,UPPER和LOWER函数

    LEFT(string,n), RIGHT(string,n)

    9.CONCAT_WS(separator,str1,str2,...)
    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。  
    第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。
    分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

    9.CONCAT_WS(separator,str1,str2,...)
    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。  
    第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。
    分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

    如果第三个参数超过字符长度也没事 它会默认去整个字符串长度

    11,RTRIM和LTRIM函数

      第一个参数是要处理的字符串,第二个参数是要从字符串左边或右边提取字符的个数

    10.CONV(N,from_base,to_base)
    不同数基间转换数字。返回值为数字的N字符串表示,由from_base基转化为 to_base 基。如有任意一个参数为NULL,则返回值为 NULL。
    自变量 N 被理解为一个整数,但是可以被指定为一个整数或字符串。最小基数为 2 ,而最大基数则为 36。

    10.CONV(N,from_base,to_base)
    不同数基间转换数字。返回值为数字的N字符串表示,由from_base基转化为 to_base 基。如有任意一个参数为NULL,则返回值为 NULL。
    自变量 N 被理解为一个整数,但是可以被指定为一个整数或字符串。最小基数为 2 ,而最大基数则为 36。

    3.LEFT和RIGHT函数

    字符串串联运算符

    由于业务需要,有的时候我们需要将两个字段(列)组合起来,中间加上分隔符,然后输出。这时我们就会用到字符串串联运算符[ ]号。例如,我们对Employees表中的firstname,空格和lastname列串联起来,生成完整的姓名fullname列。

    SQL查询代码:

    -- 设置数据库上下文
    USE TSQLFundamentals2008;
    GO
    
    -- fullname是串联运算符串联后的结果
    SELECT empid,firstname,lastname,firstname N' ' lastname AS fullname 
    FROM hr.Employees
    

    查询结果:

    图片 5

    需要注意的是,ANSI SQL规定对NULL值执行串联运算后也会产生NULL值的结果,这是SQL Server的默认行为。当然,可以通过将名为CONCAT_NULL_YIELDS_NULL的会话选项设置为OFF来改变SQL Server的默认处理方式,但是要记得,在处理完成后要设置回原来的ON状态。

    SELECT LEFT('abcde',2),RIGHT('abcde',2);
    

    11.ELT(N,str1,str2,str3,...)
    若N = 1,则返回值为 str1 ,若N = 2,则返回值为 str2 ,以此类推。   若N 小于1或大于参数的数目,则返回值为 NULL 。

    11.ELT(N,str1,str2,str3,...)
    若N = 1,则返回值为 str1 ,若N = 2,则返回值为 str2 ,以此类推。   若N 小于1或大于参数的数目,则返回值为 NULL 。

    其实SUBSTRING 函数简化版

    SUBSTRING提取子串

    SUBSTRING函数用于从字符串中提取子串。例如,以下代码返回字符串‘abc’.

    SQL查询代码:

    SELECT SUBSTRING('abcde',1,3);
    

    查询结果:

    图片 6

    注意:1,一般开始位置是从1开始的。

       2,如果第二个参数和第三个参数的和超过了整个字符串的长度,则函数会返回从起始位置开始,直到字符串结尾的整个字符串而不会引起错误。当需要返回从某个位置开始,直到结尾的所有内容时,可以指定一个非常大的值或者表示整个字符串的长度的值就可以。

    图片 7

    12.EXPORT_SET(bits,on,off[,separator[,number_of_bits]])
    返回值为一个字符串,其中对于bits值中的每个位组,可以得到一个 on 字符串,而对于每个清零比特位,可以得到一个off 字符串。
    bits 中的比特值按照从右到左的顺序接受检验 (由低位比特到高位比特)。
    字符串被分隔字符串分开(默认为逗号‘,'),按照从左到右的顺序被添加到结果中。number_of_bits 会给出被检验的二进制位数 (默认为 64)。

    12.EXPORT_SET(bits,on,off[,separator[,number_of_bits]])
    返回值为一个字符串,其中对于bits值中的每个位组,可以得到一个 on 字符串,而对于每个清零比特位,可以得到一个off 字符串。
    bits 中的比特值按照从右到左的顺序接受检验 (由低位比特到高位比特)。
    字符串被分隔字符串分开(默认为逗号‘,'),按照从左到右的顺序被添加到结果中。number_of_bits 会给出被检验的二进制位数 (默认为 64)。

    SELECT RIGHT('abcde', 3); -- 'cde'
    
    SELECT LEFT(N'abcde',3); -- 'abc'
    

    LEFT和RIGHT

    LEFT和RIGHT函数是SUBSTRING的简写形式,它们分别返回输入字符串从左或右边开始的指定个数的字符。例如,以下代码返回字符'cde'。

    SQL查询代码:

    SELECT RIGHT('abcde',3);
    

    查询结果跟SUBSTRING一样。LEFT的使用同RIGHT。

    LEN(string),DATALENGTH(string)

    13.FIELD(str,str1,str2,str3,...)
    返回值为str1, str2, str3,……列表中的str 指数(位置)。在找不到str 的情况下,返回值为 0 。
    如果所有对于FIELD() 的参数均为字符串,则所有参数均按照字符串进行比较。
    如果所有的参数均为数字,则按照数字进行比较。否则,参数按照双倍进行比较。

    13.FIELD(str,str1,str2,str3,...)
    返回值为str1, str2, str3,……列表中的str 指数(位置)。在找不到str 的情况下,返回值为 0 。
    如果所有对于FIELD() 的参数均为字符串,则所有参数均按照字符串进行比较。
    如果所有的参数均为数字,则按照数字进行比较。否则,参数按照双倍进行比较。

    4.LEN和DATALENGTH函数

    LEN和DATALENGTH

    LEN函数返回输入字符串的字符数。而DATALENGTH函数返回输入字符串的字节数。需要注意它们的区别。LEN的语法形式为:LEN(string),DATALENGTH的语法形式为:DATALENGTH(string)

    例如,以下代码返回字符串的字符数5

    SQL查询代码:

    SELECT LEN(N'abcde');
    

    查询结果输出:5

    而如果使用DATALENGTH函数则输出:10。

      LEN 函数返回字符数,DATALENGTH 函数返回字节数

    14.FIND_IN_SET(str,strlist)
    假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间(即str在strlist中的位置) 。
    一个字符串列表就是一个由一些被‘,'符号分开的自链组成的字符串。

    14.FIND_IN_SET(str,strlist)
    假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间(即str在strlist中的位置) 。
    一个字符串列表就是一个由一些被‘,'符号分开的自链组成的字符串。

    SELECT LEN(N'abcde'); -- 5
    
    SELECT DATALENGTH(N'abcde'); -- 10
    

    CHARINDEX函数

    CHARINDEX函数返回字符串中某个子串第一次出现的起始位置。它的语法形式为:CHARINDEX(substring,string[,start_pos]),该函数在第二个参数(string)中搜索第一个参数(substring),并返回其起始位置,可以选择性地指定第三个参数(start_pos),以便告诉这个函数从字符串的什么位置开始搜索,如果不指定的话,则从字符串的第一个字符串开始搜索。如果在string中找不到substring,则函数返回0。

    例如,以下代码在'trac mcgrady'中查找第一个空格的位置,结果将返回5

    SQL查询代码:

    SELECT CHARINDEX(' ','trac mcgrady');
    
    SELECT LEN(N'ABCDE'),DATALENGTH(N'ABCDE');
    

    15.FORMAT(X,D)
    将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。
    若 D 为 0, 则返回结果不带有小数点,或不含小数部分。

    15.FORMAT(X,D)
    将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。
    若 D 为 0, 则返回结果不带有小数点,或不含小数部分。

    LEN 返回字符数  DATALENGTH 返回字节数   LEN会删除尾随空格 但 DATALENGTH  不会

    PATINDEX函数

    PATINDEX函数返回字符串中某个模式第一次出现的起始位置。它的语法形式为:PATINDEX(pattern,string)

    例如,我们需要在字符串中找到第一次出现数字的位置。

    SQL查询代码:

    SELECT PATINDEX('%[0-9]%','abcd123efgh');
    

    查询结果:5

    图片 8

    16.HEX(N_or_S)
    如果N_OR_S 是一个数字,则返回一个 十六进制值 N 的字符串表示,在这里,N 是一个longlong (BIGINT)数。这相当于 CONV(N,10,16)。

    16.HEX(N_or_S)
    如果N_OR_S 是一个数字,则返回一个 十六进制值 N 的字符串表示,在这里,N 是一个longlong (BIGINT)数。这相当于 CONV(N,10,16)。

    5.CHARINDEX 函数

    REPLACE替换

    REPLACE函数将字符串中出现的某个子串替换为另一个字符串。它的语法形式为:REPLACE(string,substring1,substring2),该函数会将string中出现的所有substring1替换为substring2。

    例如,以下代码将输入字符串中的所有连字符(-)替换为冒号(:)

    SQL查询代码:

    SELECT REPLACE('1-a 2-b','-',':');
    

    查询结果:1:a 2:b

    CHARINDEX(substring,string[,start_pos])

    17.INSERT(str,pos,len,newstr) (str中的字符被newstr替换)
    返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符。
    如果pos 超过字符串长度,则返回值为原始字符串。
    假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。

    17.INSERT(str,pos,len,newstr) (str中的字符被newstr替换)
    返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符。
    如果pos 超过字符串长度,则返回值为原始字符串。
    假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。

    SELECT CHARINDEX(' ','Itzik Ben-Gan'); -- 6
    

    REPLICATE复制字符串

    REPLICATE函数以指定的次数复制字符串值。它的语法形式为:REPLICATE(string,n)

    例如,以下代码将字符串‘abc’复制三次,返回字符串'abcabcabc'。

    SQL查询代码:

    SELECT REPLICATE('abc',3);
    

    查询结果:'abcabcabc'

    下面这个例子显示了REPLICATE函数,以及RIGHT函数和字符串串联的用法。以下对Production.Suppliers的查询为每个供应商的整数ID生成一个10位数字的字符串表示(不足10位时,前面补‘0’)

    SQL查询代码:

    -- 设置数据库上下文
    USE TSQLFundamentals2008;
    GO
    
    SELECT supplierid,
        RIGHT(REPLICATE('0',9) CAST(supplierid AS VARCHAR(10)),10) AS strsupplierid
    FROM Production.Suppliers
    ORDER BY supplierid
    

    查询结果:

    图片 9

      在第二个参数中搜索第一个参数,并返回其起始位置。可以选择性的指定第三个参数,函数将从字符串指定位置开始搜索,默认从第一个字符开始搜索。如果在string中找不到substring,则返回0

    18.INSTR(str,substr)
    返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。

    18.INSTR(str,substr)
    返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。

    返回空格在 后面字符串第一次出现位置

    STUFF函数

    STUFF函数可以先删除字符串中的一个子串,然后再插入一个新的子串作为替换。它的语法形式为:STUFF(string,pos,delete_length,insertstring)

    例如,以下代码对字符串‘xyz’进行处理,先删除其中的第二个字符,再插入字符串'abc'.

    SQL查询代码:

    SELECT STUFF('xyz',2,1,'abc');
    

    查询结果:'xabcz'

    SELECT CHARINDEX(N'C',N'AB CDE');
    

    19.LCASE(str)
    LCASE() 是 LOWER()的同义词。

    19.LCASE(str)
    LCASE() 是 LOWER()的同义词。

    6.PATINDEX 函数

    UPPER和LOWER函数

    UPPER和LOWER函数用于将输入字符串中的所有字符都转换为大写或小写形式。它们的语法形式为:UPPER(string),LOWER(string)。

    例如,第一个函数返回'TRAC MCGRADY',第二个函数返回'trac mcgrady'。

    -- 返回'TRAC MCGRADY'
    SELECT UPPER('trac mcgrady');
    
    -- 返回‘trac mcgrady’
    SELECT LOWER('Trac Mcgrady');
    

    图片 10

    20.LEFT(str,len)
    返回从字符串str 开始的len 最左字符。

    20.LEFT(str,len)
    返回从字符串str 开始的len 最左字符。

    模糊查询条件 在字符串中出现的位置

    RTRIM和LTRIM函数

    RTRIM和LTRIM函数用于删除输入字符串的尾部空格和前导空格。它们的语法形式为:RTRIM(string),LTRIM(string)。如果既想删除前导空格,也想删除尾部空格,则可以将一个函数的结果作为另一个函数的输入来使用。例如,以下代码会删除输入字符串的前导空格和尾部空格,最后返回‘abc’

    SQL查询代码:

    -- 返回'abc'
    SELECT RTRIM(LTRIM(' abc '));
    

    PATINDEX(pattern,string)

    21.LENGTH(str)
    返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。
    这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。

    21.LENGTH(str)
    返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。
    这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。

    SELECT PATINDEX('%[0-9]%', 'abcd123efgh'); -- 5
    

      参数 pattern 使用的模式与 T-SQL 中 LIKE 谓词使用的模式类似。

    22.LOAD_FILE(file_name) (不错)
    读取文件并将这一文件按照字符串的格式返回。
    例:

    22.LOAD_FILE(file_name) (不错)
    读取文件并将这一文件按照字符串的格式返回。
    例:

    找寻 数字在后面字符串第一次出现的位置

    SELECT PATINDEX('%[0-9]%','ABC123DEFG');
    

    复制代码 代码如下:

    复制代码 代码如下:

    7.REPLACE函数

    图片 11

    mysql> UPDATE tbl_name
               SET blob_column=LOAD_FILE('/tmp/picture')
               WHERE id=1;

    mysql> UPDATE tbl_name
               SET blob_column=LOAD_FILE('/tmp/picture')
               WHERE id=1;

    SELECT REPLACE('1-a 2-b', '-', ':'); -- '1:a 2:b'
    

    REPLACE(string,substring1,substring2)

    23.LOCATE(substr,str) , LOCATE(substr,str,pos)
    第一个语法返回字符串 str中子字符串substr的第一个出现位置。
    第二个语法返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

    23.LOCATE(substr,str) , LOCATE(substr,str,pos)
    第一个语法返回字符串 str中子字符串substr的第一个出现位置。
    第二个语法返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

    替换函数 也可以用来计算字符串中字符出现的次数

      将 string 中出现的所有 substring1 替换为 substring2。

    24.LOWER(str)
    返回字符串 str 以及所有根据最新的字符集映射表变为小写字母的字符 (默认为 cp1252 Latin1)。

    24.LOWER(str)
    返回字符串 str 以及所有根据最新的字符集映射表变为小写字母的字符 (默认为 cp1252 Latin1)。

    SELECT empid, lastname,
      LEN(lastname) - LEN(REPLACE(lastname, 'e', '')) AS numoccur
    FROM HR.Employees;
    
    SELECT REPLACE('1-A 2-B','-',':');
    

    25.LPAD(str,len,padstr)
    返回字符串 str, 其左边由字符串padstr 填补到len 字符长度。假如str 的长度大于len, 则返回值被缩短至 len 字符。
    即在str前面添加长度为len的padstr.

    25.LPAD(str,len,padstr)
    返回字符串 str, 其左边由字符串padstr 填补到len 字符长度。假如str 的长度大于len, 则返回值被缩短至 len 字符。
    即在str前面添加长度为len的padstr.

    获取字符串中E出现的次数  当前长度减替换后的长度

    图片 12

    26.LTRIM(str)
    返回字符串 str ,其引导空格字符被删除。

    26.LTRIM(str)
    返回字符串 str ,其引导空格字符被删除。

    8.REPLICATE函数

    用 REPLACE 和 LEN 函数返回某个字符串中字符出现的次数

    27.MAKE_SET(bits,str1,str2,...)
    返回一个设定值 (一个包含被‘,'号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。
    str1 对应比特 0, str2 对应比特1,以此类推。str1, str2, ...中的 NULL值不会被添加到结果中。

    27.MAKE_SET(bits,str1,str2,...)
    返回一个设定值 (一个包含被‘,'号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。
    str1 对应比特 0, str2 对应比特1,以此类推。str1, str2, ...中的 NULL值不会被添加到结果中。

    SELECT REPLICATE('abc', 3); -- 'abcabcabc'
    
    SELECT LEN('I''M ZHANGSAN,FROM CHINA')-LEN(REPLACE('I''M ZHANGSAN,FROM CHINA',' ',''));
    

    28.MID(str,pos,len)
    MID(str,pos,len) 是 SUBSTRING(str,pos,len)的同义词。

    28.MID(str,pos,len)
    MID(str,pos,len) 是 SUBSTRING(str,pos,len)的同义词。

    复制字符串  通常可用它来生成订单号 例如

    图片 13

    29.OCT(N)
    返回一个 N的八进制值的字符串表示,其中 N 是一个longlong (BIGINT)数。这等同于CONV(N,10,8)。若N 为 NULL ,则返回值为NULL。

    29.OCT(N)
    返回一个 N的八进制值的字符串表示,其中 N 是一个longlong (BIGINT)数。这等同于CONV(N,10,8)。若N 为 NULL ,则返回值为NULL。

    SELECT supplierid,
      RIGHT(REPLICATE('0', 9)   CAST(supplierid AS VARCHAR(10)),
            10) AS strsupplierid
    FROM Production.Suppliers;
    

    REPLICATE(string,n)

    30.OCTET_LENGTH(str)
    OCTET_LENGTH() 是 LENGTH()的同义词。

    30.OCTET_LENGTH(str)
    OCTET_LENGTH() 是 LENGTH()的同义词。

    图片 14

      将string复制n遍

    31.ORD(str)
    若字符串str 的最左字符是一个多字节字符,则返回该字符的代码,
    假如最左字符不是一个多字节字符,那么 ORD()和函数ASCII()返回相同的值。

    31.ORD(str)
    若字符串str 的最左字符是一个多字节字符,则返回该字符的代码,
    假如最左字符不是一个多字节字符,那么 ORD()和函数ASCII()返回相同的值。

     

    SELECT REPLICATE('ABC',3);
    

    32.POSITION(substr IN str)
    POSITION(substr IN str)是 LOCATE(substr,str)同义词。

    32.POSITION(substr IN str)
    POSITION(substr IN str)是 LOCATE(substr,str)同义词。

    字符串处理函数,Mysql字符串处理函数详细介绍。复制9个0 对id类型统一后从右取10个字符   可以根据需求定制类型

    图片 15

    33.QUOTE(str)
    引证一个字符串,由此产生一个在SQL语句中可用作完全转义数据值的结果。

    33.QUOTE(str)
    引证一个字符串,由此产生一个在SQL语句中可用作完全转义数据值的结果。

    9.STUFF 函数

    REPLACE 函数,RIGHT 函数和字符串串联的用法

    34.REPEAT(str,count)
    返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
    若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。

    34.REPEAT(str,count)
    返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
    若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。

    允许从字符串中移除指定数量字符串 并插入新子字符串

    SELECT supplierid,RIGHT(REPLICATE('0',9) CAST(supplierid AS VARCHAR(10)),10) AS strsupplierid FROM Production.Suppliers;
    

    35.REPLACE(str,from_str,to_str)
    返回字符串str 以及所有被字符串to_str替代的字符串from_str 。

    35.REPLACE(str,from_str,to_str)
    返回字符串str 以及所有被字符串to_str替代的字符串from_str 。

    SELECT STUFF('xyz', 2, 1, 'abc'); -- 'xabcz'
    

    图片 16

    36.REVERSE(str)
    返回字符串 str ,顺序和字符顺序相反。

    36.REVERSE(str)
    返回字符串 str ,顺序和字符顺序相反。

    第一个参数 字符串 第二个参数 开始移除位置    第三个参数 移除几个字符   第三个参数 移除的字符要替换成什么字符

    STUFF(string,pos,delete_length,insertstring)

    37.RIGHT(str,len)
    从字符串str 开始,返回最右len 字符。

    37.RIGHT(str,len)
    从字符串str 开始,返回最右len 字符。

    10.UPPER和LOWER 函数

      对输入参数 string 进行处理,从 pos 指定的位置开始删除 delete_length 指定长度的字符;然后将 insertstring 插入到 pos 指定的位置

    38.RPAD(str,len,padstr)
    返回字符串str, 其右边被字符串 padstr填补至len 字符长度。
    假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。

    38.RPAD(str,len,padstr)
    返回字符串str, 其右边被字符串 padstr填补至len 字符长度。
    假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。

    SELECT UPPER('Itzik Ben-Gan'); -- 'ITZIK BEN-GAN'
    
    SELECT LOWER('Itzik Ben-Gan'); -- 'itzik ben-gan'
    
    SELECT STUFF('XYZ',2,1,'ABC');
    

    39.RTRIM(str)
    返回字符串 str ,结尾空格字符被删去。

    39.RTRIM(str)
    返回字符串 str ,结尾空格字符被删去。

    大小写互转

    图片 17

    40.SOUNDEX(str)
    从str返回一个soundex字符串。

    40.SOUNDEX(str)
    从str返回一个soundex字符串。

    11.RTRIM和LTRIM 函数

    UPPER(string),LOWER(string)

    41.SPACE(N)
    返回一个由N 间隔符号组成的字符串。

    41.SPACE(N)
    返回一个由N 间隔符号组成的字符串。

    SELECT RTRIM(LTRIM('   abc   ')); -- 'abc'
    

      UPPER 函数将字符串转换为大写,LOWER将字符串转换为小写

    42.SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
    SUBSTR()是 SUBSTRING()的同义词。
    不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。
    带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。
    使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。
    假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。

    42.SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
    SUBSTR()是 SUBSTRING()的同义词。
    不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。
    带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。
    使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。
    假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。

    它们分别是删除 前空格 和后空格

    SELECT UPPER('abc'),LOWER('ABC')
    

    43.SUBSTRING_INDEX(str,delim,count)
    在定界符 delim 以及count 出现前,从字符串str返回自字符串。
    若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。

    43.SUBSTRING_INDEX(str,delim,count)
    在定界符 delim 以及count 出现前,从字符串str返回自字符串。
    若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。

    12.FORMAT 函数

    图片 18

    44.TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str)
    返回字符串 str , 其中所有remstr 前缀和/或后缀都已被删除。
    若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH 。 remstr 为可选项,在未指定情况下,可删除空格。

    44.TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str)
    返回字符串 str , 其中所有remstr 前缀和/或后缀都已被删除。
    若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH 。 remstr 为可选项,在未指定情况下,可删除空格。

    类似于字符串格式拼接

    RTRIM(string),LTRIM(string)

    45.UCASE(str)
    UCASE()是UPPER()的同义词。

    45.UCASE(str)
    UCASE()是UPPER()的同义词。

    SELECT FORMAT(1759, 'd10'); -- '0000001759'
    SELECT FORMAT(1759, '0000000000'); -- '0000001759'
    

      RTRIM 删除尾空格,LTRIM 删除前导空格

    46.UNCOMPRESS(string_to_uncompress)
    对经COMPRESS()函数压缩后的字符串进行解压缩。

    46.UNCOMPRESS(string_to_uncompress)
    对经COMPRESS()函数压缩后的字符串进行解压缩。

    自定义格式化字符串输入 可以有多种选择  官方参考链接 

    SELECT RTRIM(' A B C '),LTRIM(' A B C '),RTRIM(LTRIM(' A B C '));
    

    47.UNCOMPRESSED_LENGTH(compressed_string)
    返回压缩字符串压缩前的长度。

    47.UNCOMPRESSED_LENGTH(compressed_string)
    返回压缩字符串压缩前的长度。

    13.LIKE 谓词函数

    图片 19

    48.UNHEX(str)
    执行从HEX(str)的反向操作。就是说,它将参数中的每一对十六进制数字理解为一个数字,并将其转化为该数字代表的字符。
    结果字符以二进制字符串的形式返回。

    48.UNHEX(str)
    执行从HEX(str)的反向操作。就是说,它将参数中的每一对十六进制数字理解为一个数字,并将其转化为该数字代表的字符。
    结果字符以二进制字符串的形式返回。

    SELECT empid, lastname
    FROM HR.Employees
    WHERE lastname LIKE N'D%';
    

     

    49.UPPER(str)
    返回字符串str, 以及根据最新字符集映射转化为大写字母的字符 (默认为cp1252 Latin1).

    49.UPPER(str)
    返回字符串str, 以及根据最新字符集映射转化为大写字母的字符 (默认为cp1252 Latin1).

    返回开头是D的用户

    50.模式匹配:通配符
    %      -------        匹配任何数目的字符,甚至包括零字符
    _      -------        只能匹配一种字符
    转义用‘/'

    50.模式匹配:通配符
    字符串处理函数,Mysql字符串处理函数详细介绍。%      -------        匹配任何数目的字符,甚至包括零字符
    _      -------        只能匹配一种字符
    转义用‘/'

    SELECT empid, lastname
    FROM HR.Employees
    WHERE lastname LIKE N'_e%';
    

    51.STRCMP(expr1,expr2)
    若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1 。

    51.STRCMP(expr1,expr2)
    若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1 。

    返回开头第二个是e的用户

     

     

    SELECT empid, lastname
    FROM HR.Employees
    WHERE lastname LIKE N'[ABC]%';
    

    附:小提示
    MySQL必要时自动变换数字为字符串,并且反过来也如此:
    mysql> SELECT 1 "1"; -> 2mysql> SELECT CONCAT(2,' test'); -> '2 test'
    如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()。
    如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。
    mysql 连接字符串与SQL不同

    附:小提示
    MySQL必要时自动变换数字为字符串,并且反过来也如此:
    mysql> SELECT 1 "1"; -> 2mysql> SELECT CONCAT(2,' test'); -> '2 test'
    如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()。
    如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。
    mysql 连接字符串与SQL不同

    返回开头是A或B或C 的用户

     
    以前用SQL Server 连接字符串是用“ ”,现在数据库用mysql,写个累加两个字段值SQL语句居然不支持" ",郁闷了半天在网上查下,才知道mysql里的 是数字相加的操作,连接字符串是CONCAT函数
    例:
    mysql> select CONCAT('My', '_', '2001');
    -> 'My_2001'

     
    以前用SQL Server 连接字符串是用“ ”,现在数据库用mysql,写个累加两个字段值SQL语句居然不支持" ",郁闷了半天在网上查下,才知道mysql里的 是数字相加的操作,连接字符串是CONCAT函数
    例:
    mysql> select CONCAT('My', '_', '2001');
    -> 'My_2001'

    SELECT empid, lastname
    FROM HR.Employees
    WHERE lastname LIKE N'[A-E]%';
    

    您可能感兴趣的文章:

    • mysql截取的字符串函数substring_index的用法
    • Mysql字符串截取函数SUBSTRING的用法说明
    • mysql 截取指定的两个字符串之间的内容
    • MySQL字符串函数详解(推荐)
    • mysql生成随机字符串函数分享
    • Mysql中实现提取字符串中的数字的自定义函数分享
    • mysql获取字符串长度函数(CHAR_LENGTH)
    • MySQL里实现类似SPLIT的分割字符串的函数
    • 用MySQL函数清除字符串首尾空白字符的方法
    • MySQL replace函数替换字符串语句的用法
    • mysql 字符串函数收集比较全
    • MySQL 字符串函数大全
    • MySQL截取和拆分字符串函数用法示例

    ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2…,sn) 将s1,s2…,sn连接成字符串 CONCAT_WS(sep,s1,s2…...

    返回开头是A到E 的用户

    SELECT empid, lastname
    FROM HR.Employees
    WHERE lastname LIKE N'[^A-E]%';
    

    返回不是A到E开头的用户  如果通配符用特殊需要转译 的用 [ ] 包起来 %[%]%

     

    本文由新葡亰496net发布于网络数据库,转载请注明出处:字符串处理函数,Mysql字符串处理函数详细介绍

    关键词:

上一篇:没有了

下一篇:没有了