prosource

where 절의 mySQL regex

probook 2023. 9. 10. 12:22
반응형

where 절의 mySQL regex

SELECT telephone_number
FROM table
WHERE telephone_number REGEXP '^1[() -]*999[() -]*999[() -]*9999$';

어떻게 하면 어떤 숫자 형식이나 어떤 숫자에 대해서도 그것을 유효하게 만들 수 있을까요?

407-888-0909
1(408)998-7654
7776654433
876-7788

지금은 1-999-999-999에 대해서만 유효합니다.

용도:

SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '^1[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{4}$';

참조:

공백, 대시, 괄호 등이 있는 데이터베이스에 전화번호를 저장하는 것은 현명하지 않습니다.가장 효율적인 방법은 모든 쓰레기를 간단한 10자리 숫자로 잘라내는 것입니다.이렇게 하면 실제로 숫자를 VARCHAR 대신 INTEGER 기반 열에 저장할 수 있습니다.

SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '[1]?[(]?[[:DIGIT:]]{3}[)]?[-]?[[:DIGIT:]]{3}[-]?[[:DIGIT:]]{4}'

언급URL : https://stackoverflow.com/questions/3452572/mysql-regex-in-the-where-clause

반응형