내가 즉에서만 사용 가능 자리에 "정규화"값을 갖는 없습니다 (이 함께 걸릴 접근하고, 정규화 된 값에 추가로 열을 추가하지 않는 제한 NULL이 아닌
Update Table SET Column =
replace
(replace
(replace(column,
'-','',
'.',''),
' ','')
)
...)
검색에 대한 사용자 입력을 받아 전략적 위치에 와일드 카드를 추가합니다.
phonenumber LIKE '%315%555%1212%'
내가 보장 아니에요하지만 그 제공된 검색 자리 것 : 예를 들어, 사용자는 다음 나는이에 대한 술어 동등 물이 쿼리를 실행할 것) 3155551212
의 검색 입력을 제공하는 경우 더 넓은 검색을 위해 전체 3 자리 지역 코드, 3 자리 교환 (중앙 오피스) 코드 및 4 자리 라인 번호가되어야합니다. 예를 들어, 제공된 모든 숫자 사이에 와일드 카드를 추가하십시오.
phonenumber LIKE '%3%1%5%5%5%5%1%2%1%2%'
이 후자의 방법은 의도하지 않은 것보다 더 많은 일치를 제공 할 수 있기 때문에 이상적이지 않습니다. 특히 사용자가 10 자리 미만을 제공하는 경우 데모로
'+1 (315) 555-7172 ext. 123'
: 예를 들어, PHONENUMBER 값을 고려 문자열에서 숫자 문자를 추출합니다 MySQL의에는 내장 문자열 함수가
SELECT '+1 (315) 555-7172 ext. 123' LIKE '%3%1%5%5%5%5%1%2%1%2%'
, '+1 (315) 555-7172 ext. 123' LIKE '%315%555%1212%'
없습니다.
이렇게하는 기능이 필요한 경우 예 :
SELECT only_digits_from('+1 (315) 555-7172 ext. 123')
는
13155557172123
당신은 그것을 수행하는 저장 기능을 만들어야 할 것입니다 돌아갑니다. 나는 SQL 문장에서 인라인으로 시도하지 않을 것이다. 그것은 길고보기 흉한 표현을 심하게 요구할 것이다.
전체 범위의 형식은 무엇입니까? 예를 들어, "+1 (514) 879-9898"과 같은 국제 형식이 있습니까? 구분 기호로 공백을? 다중 문자 구분 기호? – Bohemian