지금 알고 있는 것을 그 때도 알고 있었더라면
티스토리 뷰MariaDB 또는 MySQL 에서 정규식(RegExp)을 조건절(where)에서 사용할 수 있습니다.
tb_user 테이블의 mobile 필드에서 하이폰(-)을 제외한 나머지가 숫자인 것만 조회하는 쿼리입니다.
먼저 소개한 쿼리와 반대되는 숫자가 아닌 것들만 조회하는 쿼리입니다. 숫자만 판별하는 정규식 이외에 모든 정규식은 적용이 되니 해당 쿼리를 응용해서 사용하시면 되겠습니다. 참고
Blog is powered by Tistory / Designed by Tistory 음수, 실수 를 모두 고려하여, 실수부는 그대로 표현하고, 천 단위마다 콤마를 추가한다. 문자열이 포함된 경우는 그대로 표현한다. -- 5.7 이하 버전에서도 사용가능 SELECT str, CASE WHEN str REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN concat(format(str, 0), substring(str, instr(str, '.'))) ELSE str END as with_comma_str FROM ( SELECT 'a2' AS str UNION ALL SELECT '2a' AS str UNION ALL SELECT '123.4.123' AS str UNION ALL SELECT '1234.' AS str UNION ALL SELECT '1' AS str UNION ALL SELECT '1000' AS str UNION ALL SELECT '0.1234' AS str UNION ALL SELECT '1234.56' AS str UNION ALL SELECT '-1234.00' AS str ) a; -- 출력결과 str |with_comma_str| ---------+--------------+ a2 |a2 | 2a |2a | 123.4.123|123.4.123 | 1234. |1234. | 1 |1 | 1000 |1,000 | 0.1234 |0.1234 | 1234.56 |1,235.56 | -1234.00 |-1,234.00 | MySQL 정규표현식 활용하여 데이터 검색하기SQL에서 특정 문자열 조건을 가진 데이터를 검색해야 하는 경우가 종종 있습니다. like는 보다 복잡하고 다양한 문자열 패턴을 검색할 때 쿼리가 상당히 지저분해지는 단점이 있기에 이를 보완할 수 있는 REGEXP 정규표현식에 대해 알아보겠습니다. 정규표현식이란? - 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어 - 문자열을 처리하는 방법 중의 하나로, 특정한 조건의 문자를 ‘검색’하거나 ‘치환’하는 과정을 매우 간편하게 처리할 수 있도록 해주는 수단 - SQL부터 스크립트 언어까지 다양한 곳에서 활용될 수 있으며 Pattern을 사용해서 문자열을 처리 - 찾고자 하는 대상에서 정규표현식을 사용해 해당 Pattern과 일치하는 문자열 검색 자주 사용하는 패턴 방식 ▣ 매칭 (Matching)
▣ 횟수 (times)
▣ 그룹 형태(group)
정규표현식 활용 in MySQL (LIKE와 REGEXP 비교) Sample Data : Products (링크 바로가기) # REGEXP 활용
# LIKE 활용
→ 동일한 결과 다른 프로그래밍 언어에서는 like와 in을 통해 여러 가지 종류의 패턴을 커버할 수 있으나, SQL에서는 LIKE와 IN을 함께 사용할 수 없어서 위처럼 LIKE를 계속해서 병렬 연결해야 합니다. 그러나, 정규표현식 REGEXP를 사용한다면 깔끔하게 쿼리를 작성할 수 있기에 유용합니다. # 또다른 예시1 (특수문자가 포함된 경우)
→ 결과
# 또다른 예시2 (특정 문자 및 길이 찾는 경우)
→ 결과
References
|