2016-07-27 3 views
1

나는 MySQL 쿼리를 가지고 있으며 우편 번호가 들어있는 필드를 요청해야합니다. 불행히도 어떤 사람들은 도시 이름이나 교외 지역을 ZIP 필드에 입력합니다. 필드에서 숫자 만 반환하는 쿼리 코드를 찾고있었습니다. stackoverflow에서 이미 발견 한 코드는 다음과 같습니다. How to remove all non-alpha numeric characters from a string?MySQL의 문자열에서 숫자 만 쿼리하는 방법

이 코드는 영숫자 문자 만 삭제합니다. 모든 a, b, c 문자를 제거하는 올바른 코드는 무엇입니까?

UPDATE를 도와 주셔서 감사합니다 : 셰 Noman에 의해 게시 코드는 phpMyAdmin을 나를 위해 작동합니다.

그러나 내 PHP 코드에서 내 쿼리에 추가 할 때 구문 분석 오류가 발생합니다.

다음은 오류를 생성하는 코드입니다.

$query = "DROP FUNCTION IF EXISTS digits; 
DELIMITER | 
CREATE FUNCTION digits(str CHAR(32)) RETURNS CHAR(32) 
BEGIN 
    DECLARE i, len SMALLINT DEFAULT 1; 
    DECLARE ret CHAR(32) DEFAULT ''; 
    DECLARE c CHAR(1); 

    IF str IS NULL 
    THEN 
RETURN ""; 
END IF; 

SET len = CHAR_LENGTH(str); 
REPEAT 
    BEGIN 
    SET c = MID(str, i, 1); 
    IF c BETWEEN '0' AND '9' THEN 
    SET ret=CONCAT(ret,c); 
    END IF; 
    SET i = i + 1; 
END; 
UNTIL i > len END REPEAT; 
RETURN ret; 
END | 
DELIMITER ; 

SELECT digits(`asdf`) FROM `12345` WHERE 1 "; 

오류는 마지막 ";" 숫자 만

SELECT * 
FROM your_table 
WHERE zipcode REGEXP '^[0-9]+$'; 

또는

SELECT * 
FROM your_table 
WHERE zipcode > 0 

을 얻기를위한

+0

[MySQL이 정규 표현식을 지원하지 않기 때문에] 사용자 정의 함수가 필요하다고 생각합니다. (http://stackoverflow.com/questions/986826/how-to-do-a-regular- expression-replace-in-mysql)을 즉시 사용할 수 있습니다. –

+0

그것을 시도하지 않은,하지만 본 [dotancohen의 코멘트] (http://stackoverflow.com/questions/6942973/mysql-how-to-remove-all-non-alpha-numeric-characters-from-a- 문자열 # comment39620969_22903586) 당신이 링크 된 질문에 허용 대답에? 그건 너에게 도움이 될거야. – roberto06

+0

PHP를 사용하여 쿼리를 실행하기 전에 string에서 숫자를 제거하지 않으시겠습니까? – romellem

답변

2

를 사용하여 정규 표현식 그것은 당신의 우편 번호 열이

123 
145adb 
adds142 
157 
237 

출력

될 것 출력 이 포함되어 예상 한 도움이되기를 바랍니다
123 
157 
237