https://dev.mysql.com/doc/refman/5.7/en/regexp.html에서이
을 말한다 근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인
경고
바이트 현명한 방식으로 정규 표현식과 RLIKE 운영자 작업, 그래서 그들은 안전 다중 바이트와 멀티 바이트 문자 집합에 예기치 않은 결과가 발생할 수 없습니다이다. 또한, 이러한 연산자는 자신의 바이트로 문자를 비교 값과 강조된 문자 주어진 데이터 정렬이 그것들을 동일하게 취급하더라도 짝수는 동일한 값인 과 비교되지 않을 수 있습니다. 당신이 정규 표현식에 Ã
를 사용하는 경우, 그것은 (16 진수)에 2 바이트 C3
및 83
와 같은 2 바이트 UTF8 코드를 치료하는 것입니다
. 이것이 당신에게 '올바른'답을 주었다면, 그것은 디자인보다는 운이 더 많을 것입니다.
이가하는 일 :
mysql> SELECT '١' REGEXP '[٩-٠]';
+-----------------------+
| '١' REGEXP '[٩-٠]' |
+-----------------------+
| 1 |
+-----------------------+
하지만, 그것은 단지 우연의 일치입니다. 정규 표현식은 [x0-x9]
과 같습니다. 여기서 x는 D9 바이트이고, 0은 A0이고 9는 A9입니다. 그러나 정규 표현식은 당신이 원하는 바가 아니다 "모든 문자 x
, 또는 0
및 x
, 또는 9
사이
이 힘 '모든'아랍어에 대한 일 :. REGEXP UNHEX('5BD82DDD5D')
,하지만 '모든'때문에 16 진수 D8부터 DD까지 시작하십시오. (그러나 그 범위 내에 다른 것이있을 수 있습니다.) 또한, "문자열에 아랍어 문자가 포함되어 있습니까? 문구 나 글자의 일부와 같이 더 복잡한 것은 사용할 수 없습니다.
숫자 범위로 돌아 가기. D9
16 진수를 확인하는 것은 백분율 기호, 위 첨자 문자 및 기타 문자를 포함하기 때문에 안전하지 않습니다. 이 은 일 : REGEXP UNHEX('D95BA02DA95D')
일 수 있습니다.
경고 :이 답변에서 제가 말한 대부분은 테스트되지 않았습니다. 나는 경험이없는 영역에서 해결책을 고안하고있다 (REGEXP와 utf8).
어떤 향기를 사용하고 있습니까? – Shafizadeh
또한 코드가 작동하지 않는 방법을 자세히 설명 할 수 있습니까? 당신은 무엇을 기대하고 있었고 실제로 무슨 일이 일어 났습니까? 예외가 발생하면 발생한 행을 게시하고 예외 세부 사항을 게시하십시오. 이 세부 정보를 입력하거나 편집하지 않으면 도움이되지 않을 수 있습니다. –
정규식을 작은 따옴표로 문자열 리터럴로 넣어야합니다. – trincot