2015-01-05 3 views
-1

테이블 products이고 가격이 인 테이블은 VARCHAR입니다. 나는변환 문제 - varchar 필드의 가격이 MySql의 Decimal에

ALTER TABLE products MODIFY COLUMN product_price DOUBLE; 
문제는 내가 기록을 정렬 할됩니다

처럼 내 테이블을 변경하지 않으

52,20 
1,607,211 
36,000 
125.00 

같은 다른 형식에 다양한 소스의 가격 값을 얻고있다 그러나 그것은하지 어떻게 가격의 모든 유형 & 형식에 대해 작동을 정렬하려면

SELECT * FROM `products` ORDER BY CAST(product_price AS DECIMAL(10,2)) asc 

작업?

+1

ORDER ?? – Strawberry

+0

문제는 예제의 경우처럼 쉼표가 소수점으로 사용될 때입니다. 56,20 – Jayvee

답변

1

당신은 가격 문자열 당신의 모든 쉼표를 제거해야하고 매장 가격에 적절한 데이터 형식을 사용하는 경우는 쿼리에서 해킹 이러한 유형의 필요가 없습니다 당신은 다음과 같은 쿼리를 사용하지만 더 나은 수 있습니다

(가격 '' '')를 + 0 REPLACE BY
SELECT * 
FROM `products` 
ORDER BY replace(product_price,',','') * 1 

DEMO

+0

예제를 보면 일부 항목은 ','를 소수점 (56,20)으로 사용하는 것으로 보입니다. 56.20 대신에 5620을 해석 할 것입니다. – Jayvee

+0

@Jayvee 나는','이 1000과 같은 돈 형식에 대해 소수점을 나타내지 않는다는 것을 나타냅니다. 체재 –