芊芊学网

网站首页 首页 > 高中学习 > 正文

mysql 字符串截取(mysql截取指定字符)

2024-06-03 09:27 高中学习 来源:

mysql如何截取一个json字符串

代码如下:

mysql 字符串截取(mysql截取指定字符)mysql 字符串截取(mysql截取指定字符)


mysql 字符串截取(mysql截取指定字符)


CREATE PROCEDURE sp_str

(

IN p_str VARCHAR(50), /原始字符串/

IN p_begin_str VARCHAR(50), /要匹配的起始字符串/

IN p_end_str VARCHAR(50)) /要匹配的结束字符串/

OUT p_result VARCHAR(50)) /返回结果/

NOT DETERMINISTIC

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE m_len INT DEFAULT 0;

DECLARE m_index INT DEFAULT 0;

/计算个匹配字符串的索引位置/

select locate(p_begin_str,p_str)+char_length(p_begin_str) into m_index;

/计算个匹配字符串的长度/

select locate(p_end_str,p_str,m_index) into m_len;

select SUBSTRING(p_str,m_index,m_len-m_index) INTO p_result ;

END;

执行:

CALL sp_str('[]abcd[12345]aa[]ss','abcd[',']',@result);

返回值 @result 为12345

call sp_str('[]abcd[sdww]aa[]ss','abcd[',']',@result);

返回值 @result 为sdww

如果不用存储过程,可以直接写sql语句实现:

代码如下:

select SUBSTRING(

']abcd[12345]111[]',

locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['),

locate(']',']abcd[12345]111[]',CHAR_LENGTH('abcd['))-

(select locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['))

)

返回值为 12345

关于mysql的函数介绍:

CHAR_LENGTH(str)

返回字符串str的长度。

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

这函数是多字节可靠的。

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)

mysql 中用正则表达式如何取一个字符串中指定的字段,

代码如下:

CREATE PROCEDURE sp_str

(

IN p_str VARCHAR(50), /原始字符串/

IN p_begin_str VARCHAR(50), /要匹配的起始字符串/

IN p_end_str VARCHAR(50)) /要匹配的结束字符串/

OUT p_result VARCHAR(50)) /返回结果/

NOT DETERMINISTIC

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE m_len INT DEFAULT 0;

DECLARE m_index INT DEFAULT 0;

/计算个匹配字符串的索引位置/

select locate(p_begin_str,p_str)+char_length(p_begin_str) into m_index;

/计算个匹配字符串的长度/

select locate(p_end_str,p_str,m_index) into m_len;

select SUBSTRING(p_str,m_index,m_len-m_index) INTO p_result ;

END;

执行:

mysql 字符串截取(mysql截取指定字符)


CALL sp_str('[]abcd[12345]aa[]ss','abcd[',']',@result);

返回值 @result 为12345

call sp_str('[]abcd[sdww]aa[]ss','abcd[',']',@result);

返回值 @result 为sdww

如果不用存储过程,可以直接写sql语句实现:

代码如下:

select SUBSTRING(

mysql 字符串截取(mysql截取指定字符)


']abcd[12345]111[]',

locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['),

locate(']',']abcd[12345]111[]',CHAR_LENGTH('abcd['))-

(select locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['))

)

返回值为 12345

关于mysql的函数介绍:

CHAR_LENGTH(str)

返回字符串str的长度。

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

这函数是多字节可靠的。

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)

MySql中截取字符串中的某几个字符

mysql> SELECT

-> SUBSTRING('G3_555', INSTR('G3_555', '_') + 1);

mysql 字符串截取(mysql截取指定字符)


+------------------------------------------------+

| SUBSTRING('G3_555', INSTR('G3_555', '_') + 1) |

+------------------------------------------------+

| 555 |

+------------------------------------------------+

1 row in set (0.00 sec)

mysql怎么截取字段的字符串

mysql有自己的函数:

left

right

substring

substring_index

根据自己的需要选

mysql 字符串截取问题,如图,只需要数字开头的前面部分,如图只需要标记的红框部分

select REVERSE(right(REVERSE(filename),length(filename)-LEAST(

if(Locate('0',REVERSE(filename)) >0,Locate('0',REVERSE(filename)),999),

if(Locate('1',REVERSE(filename)) >0,Locate('1',REVERSE(filename)),999),

if(Locate('2',REVERSE(filename)) >0,Locate('2',REVERSE(filename)),999),

if(Locate('3',REVERSE(filename)) >0,Locate('3',REVERSE(filename)),999),

if(Locate('4',REVERSE(filename)) >0,Locate('4',REVERSE(filename)),999),

if(Locate('5',REVERSE(filename)) >0,Locate('5',REVERSE(filename)),999),

if(Locate('6',REVERSE(filename)) >0,Locate('6',REVERSE(filename)),999),

if(Locate('7',REVERSE(filename)) >0,Locate('7',REVERSE(filename)),999),

if(Locate('8',REVERSE(filename)) >0,Locate('8',REVERSE(filename)),999),

if(Locate('9',REVERSE(filename)) >0,Locate('9',REVERSE(filename)),999)

)+1)),filename

from homework


免责声明: 本文由用户上传,如有侵权请联系删除!


标签:

最新文章
热评文章
随机文章