2011-03-07 2 views
1
을 반환 할의 제기 값이 "<script type="text/javascript"src="http://localhost:8080/db/widget/10217EN/F"></script>"입니다

내 테이블, 내가이 문자열을 분석하는 방법을 사용하여 MySQL의 정규식을 할 수있는 ID 10217을 가져 할 , 어떻게 검색 문자열을 사용 MySQL의 정규식

? 파이썬 regex 그룹 함수가 id 10217을 반환 할 수 있다는 것을 알고 있지만, 나는 mysql 정규식에 익숙하지 않다.

도와주세요, 정말 고마워요.

답변

1

MySQL 정규식은 하위 패턴 추출을 지원하지 않습니다. 데이터베이스의 모든 행을 반복하고 결과를 새 열에 저장하는 것이 더 나을 것입니다.

+0

세트 (0.00 초)에
2 행은, 대단히 감사합니다. – Argun

0

내가 아는 한, MySQL의 REGEXP를 하위 문자열 검색에 사용할 수 없습니다. WHERE 절에서 사용하도록 설계되었으며 일치시 실패 또는 성공을 나타 내기 위해 0 또는 1을 리턴하는 것으로 제한됩니다.

패턴이 잘 정의 되었기 때문에 SUBSTR 및 LOCATE를 사용하는 쿼리로 ID를 검색 할 수 있습니다. SUBSTR이 시작 색인을 원하고 길이가 인 하위 문자열 (end index를 취하면 더 쉬울 것입니다.)을 원하기 때문에 다소 엉망이 될 것입니다. 아마도 TRIM을 사용하여 원치 않는 후미 부분을 잘라낼 수 있습니다.

+0

방법 : SELECT SUBSTR ('', LOCATE ('위젯 /', '<스크립트 id는 ID를 가져올 수 있지만 매우 어리석은 것입니다. id를 가져올 수 있습니다. id = "text/javascript"src = "http : // localhost : 8080/db/widget/10217EN/F"> ' 이 칼럼을 해결하기위한 새로운 칼럼. 감사합니다. – Argun

1

이 쿼리 분야에서

SELECT SUBSTRING_INDEX 이드를 얻을 ('/', SUBSTRING_INDEX (TESTVAR를 - 3), 'EN', 1) testtab에서;

는 곳 testtab으로 -, TESTVAR은 테이블 이름입니다 - 필드의 이름입니다

내부 문자열 얻을 문자열

MySQL의> SELECT SUBSTRING_INDEX (TESTVAR, '/', - 3)은 지난 3 /로 시작 testtab에서;

+ ---------------------------- +
| SUBSTRING_INDEX (testvar, '/', - 3) |
+ ---------------------------- +
| 10217EN/F "> |
| 10222EN/F"> | 세트
+ ---------------------------- +
2 행 (0.00 초)

외측 문자열

얻을

의 MySQL> SELECT SUBSTRING_INDEX (SUBSTRING_INDEX (TESTVAR '/'- 3) 'EN', 1)에서 testtab;

+ --------------------------------------------- ------- +
| substring_index (SUBSTRING_INDEX (testvar, '/', - 3), 'EN', 1)
| + ------------------------------------------------ ---- +
| 10217 |
| 10222 |
+ ----------------------------------------------- ----- + 나는이 문제를 해결하기 위해 새 열을 추가합니다

+0

SQL이 자주 호출됩니다. 따라서 새 열을 추가해야합니다. 감사합니다. – Argun