2011-09-29 4 views
2

이것은 매우 이상한 질문입니다 ... 저는 MySQL과 함께 일종의 정규식이 필요하다고 생각합니다. Varchar 필드를 업데이트하여 소수점 이하 3 자리수가되도록

내가 그런 아래와 같이 테이블에 쿼리를 가지고 말 :

>select description from foo; 
---------------------------------- 
| description     | 
---------------------------------- 
    Kitten, 3 in., Lightsaber 
    Mouse, 5.5 in., Luke Skywalker 
    Dog, 9.000 in., Death Star 

은 "인치"(.)에 부분 소수점 이하 세 자리에이되도록 foo는 업데이트 할 수있는 방법이 있나요. 업데이트 후

즉이 :

>select description from foo; 
----------------------------------- 
| description     | 
----------------------------------- 
    Kitten, 3.000 in., Lightsaber 
    Mouse, 5.500 in., Luke Skywalker 
    Dog, 9.000 in., Death Star 

어떤 조언/지침은 대단히 감사합니다! 감사.

+6

RDBMS의 필드를 합성합니다. 이 값이 각각 적절히 유형화 된 열에있는 경우 여기에는 아무런 작업도 수행되지 않습니다. – Joe

+0

왜 응용 프로그램에서 Decimal 형식을 사용하고 숫자의 서식을 지정하지 않습니까? 문자열을 사용하여 숫자를 저장하는 것은 전화 번호와 같은 숫자에 의미가없는 경우에만 수행해야하는 작업입니다. 접근 방식은 매우 짧으며이 값을 비교하거나 정렬해야하는 경우 두통이 듭니다. – mikerobi

+0

아시다시피, 불행합니다. 응용 프로그램에서 숫자 서식이 처리되었지만 불일치가 오래되는 오래된 데이터입니다. 필드는 프로그램 내부에 내장되어있어 그런 식으로 저장되었습니다. 지금은 피해를 완화하려고 노력하고 있습니다. ( – jparanich

답변

1

the documentation에 따르면 SELECT 명령에서는 불가능합니다.

REGEXP은 일치 여부 만 알려줍니다. 일치 인덱스 또는 대체를 제공하지 않습니다.

데이터를 일반 텍스트 파일로 내보내고 좋아하는 Regex 사용 가능 텍스트 편집기로 처리 한 다음 데이터를 새로운 데이터 구조에 다시 적용해야합니다. 진심으로, 당신은 DB 디자인을 변경해야합니다. 내 대답은해야처럼

업데이트

추가 조사 후, 그것은 보인다는 상자에서 수 없습니다.

확인이 항목의 내용 : How to do a regular expression replace in MySQL? UDF를 통해 SQL을 통해 변환 할 수 있습니다.

+0

감사합니다 ... awk의 match/split/regex 기능을 사용하여 종료되었습니다. 멋지게 :) – jparanich

관련 문제