my sql 에서 지정 한 두 문자열 사이 의 내용 을 캡 처 합 니 다.

2152 단어 mysql절취
기 존 문자열'[]aseabcd[12345]ddxabcdsx[]'와'abcd['이후 첫 번 째']'사이 의 내용'12345'를 캡 처 하려 면 물론 내용 의 길 이 는 고정 되 어 있 지 않 으 며'123456'또는 다른 문자열 일 수 있 습 니 다.그 가 나 에 게 물 었 을 때,나 는 첫 번 째 반응 이 바로 생각 하 는 index Of 였 는데,나중에 조사해 보 니 my sql 에 index Of 가 아니 라 locate 였 다.30 분 여의 시 도 를 거 쳐 그 가 이 효 과 를 실현 하도록 도와 주 는 것 이 가장 좋다.4567913)집행:CALL spstr('[]abcd[12345]aa[]ss','abcd[',']',@result); 반환 값@result 12345 call spstr('[]abcd[sdww]aa[]ss','abcd[',']',@result); 반환 값@result 는 sdww 입 니 다.저장 과정 을 사용 하지 않 으 면 sql 문 구 를 직접 쓸 수 있 습 니 다.예 를 들 어
 
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;
반환 값 은 12345 my sql 에 관 한 함수 소개:CHARLENGTH(str)는 문자열 str 의 길 이 를 되 돌려 줍 니 다.LOCATE(substr,str)POSITION(substr IN str)문자열 str 에서 하위 문자열 substr 가 처음으로 나타 난 위 치 를 되 돌려 줍 니 다.substr 가 str 에 없 으 면 0.mysql>select LOCATE('bar','foobarbar')를 되 돌려 줍 니 다.->4 mysql> select LOCATE('xbar', 'foobar'); -> 0 이 함 수 는 다 바이트 가 믿 을 만하 다.LOCATE(substr,str,pos)는 문자열 str 에서 처음으로 나타 난 하위 문자열 substr 의 위 치 를 되 돌려 줍 니 다.위치 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 부터 시작 합 니 다.프 롬 을 사용 하 는 변종 형 태 는 ANSI SQL 92 문법 이다.mysql> select SUBSTRING('Quadratically',5,6); -> 'ratica'이 함 수 는 다 바이트 로 믿 을 수 있 습 니 다.SUBSTRING(str,pos)

좋은 웹페이지 즐겨찾기