2012-01-14 4 views
3

하나의 열 유형이 longtext이고 저장된 숫자가있는 테이블이 MySQL 데이터베이스에 있습니다. 해당 열의 숫자로 정렬 된 표의 콘텐츠를 가져와야합니다. 이 쿼리의 분류와SQL에서 longtext를 int로 정렬

SELECT * FROM wp_postmeta WHERE meta_key = 'rating_avg' ORDER BY meta_value 

적절한하지 않고 다음과 같습니다

0 
1.6 
10 
5 

하지만이 같은 필요 :이 열이 많은이 있기 때문에, 나는 열 유형을 변경할 수 없습니다

10 
5 
1.6 
0 

다른 유형의 데이터. SQL 쿼리에서 임시로 열 유형을 변경할 수 있습니까?

답변

9

당신이 찾고있는 것은 CAST입니다.

CAST(expr AS type) 

귀하의 SQL 쿼리는 다음과 같이한다 :

SELECT * FROM wp_postmeta WHERE meta_key = 'rating_avg' ORDER BY CAST(`meta_value` AS DECIMAL) DESC 
+0

내가 이것을 시도하고 데이터베이스에 처음 100 행에 대해 작동 ... 처음 100 행 후, 정렬 텍스트를 정렬과 같이 계속됩니다. – Milos

+0

글쎄, 당연히 데이터베이스/쿼리에는 문제가 있으며 솔루 션 자체는 아닙니다. – technology

1

이것은 또한 기본 워드 프레스의 기능을 수행 할 수 있습니다 원시 SQL에 의존하지 않고. WP_Query에 meta_value (reference) 대신 orderby 매개 변수 meta_value_num을 지정하십시오.

1

질문이 요청 이후 그것은 년 이상 지났지 만 검색 후 여기 온 사람에게 참조를 위해, 대답은 (DECIMAL AS meta_value (10,2))

CAST

입니다

때문에 쿼리가 있어야한다 :

SELECT * FROM wp_postmeta WHERE meta_key = 'rating_avg' ORDER BY CAST(`meta_value` AS DECIMAL(10,2)) DESC