2013-08-24 2 views
0

MySQl 데이터베이스에서 쿼리를 실행 중이고 달러가 포함 된 텍스트 문자 필드가 있습니다. 기호 및 숫자 (예 : $ 1,345.89) NULL이 아니고 (일부 텍스트 필드가 NULL 임) 확인해야하며 값이 0보다 커야합니다.이 텍스트 필드를 십진수 값으로 변환하면 어떻게 할 수 있습니까? 0보다 큰지 확인하십시오. 데이터베이스의 원래 텍스트를 변경하고 싶지 않습니다.SQL 쿼리 - 달러 기호를 포함하는 텍스트 필드를 십진수로만 변환하는 방법 (달러 기호 제거)

덕분에 여기

내가 노력 쿼리이지만 작동하지 않습니다

SELECT parcel, year, due FROM deliquent_property WHERE year IN ('2013', '2012', '2011', '2010') GROUP BY parcel HAVING due LIKE '%[0-9]%';

+0

이 필드에서 1에서 9까지의 숫자가 포함 된 행을 반환하는 쿼리 또는 무언가가 참인 경우 0 또는 1을 포함하는 열이있는 모든 행을 반환하는 쿼리 또는 – dcaswell

+0

지금은 예하지만 내가 찾은 항목에 따라 값을 0에서 100 또는 1000과 같은 값으로 늘릴 수 있습니다. 따라서 1-9의 발생을 0보다 큰지 여부를 찾는 것으로는 작동하지 않습니다. –

답변

6

트릭 할 것이 쿼리 :

SELECT ID, 
     CAST(REPLACE(REPLACE(IFNULL(Amount,0),',',''),'$','') AS DECIMAL(10,2)) 
FROM Table1 
WHERE CAST(REPLACE(REPLACE(IFNULL(Amount,0),',',''),'$','') AS DECIMAL(10,2)) > 0 

참조 SQLFIDDLE : http://www.sqlfiddle.com/#!2/55f433/1/0

+0

화려한 대답, 가치가 $ 100.00 인 varchar (50) 필드를 변환하는 것과 관련하여 저에게 완벽하게 작동했으며 그 레코드를 가져와야했습니다> 150.00 – donviti