2014-09-25 1 views
1

나는 다음과 같은 SQL 쿼리가 있습니다 때문에 결과를 얻을하지 않는 번호 앞에하지만 ' 20.1' 또는 ' 20.1'의 공간으로공간/탭이 변수 앞에 있는지 확인하는 방법은 무엇입니까?

select date, apptemp from weather where apptemp like '%20.1'; 

+---------------------+---------+ 
| date    | apptemp | 
+---------------------+---------+ 
| 2014-09-24 15:18:43 | 20.1 | 
| 2014-09-24 16:23:41 | 20.1 | 
| 2014-09-25 14:08:57 | 20.1 | 
+---------------------+---------+ 

을 나는 그것이 될 줄 알았는데 :

select date, apptemp from weather where apptemp = '20.1'; 

Empty set (0.05 sec) 

그때 실행하는 경우를 어느 한 쪽.

20.1 앞에 어떤 캐릭터가 있는지 어떻게 알 수 있습니까?

업데이트 : - :

mysql> SELECT date, apptemp, HEX(apptemp) FROM weather; 

응 덕분에 나는 HEX을 시도했습니다?

+---------------------+---------+--------------+ 
| date    | apptemp | HEX(apptemp) | 
+---------------------+---------+--------------+ 
| 2014-09-25 14:19:04 | 21.4 | 15   | 
| 2014-09-25 14:24:02 | 21.3 | 15   | 
| 2014-09-25 14:28:57 | 20.8 | 15   | 
| 2014-09-25 14:34:02 | 21.4 | 15   | 
| 2014-09-25 14:38:59 | 21.2 | 15   | 
+---------------------+---------+--------------+ 

업데이트 2 :

는 뭔가 것으로 보인다. - 할 경우

select date, apptemp from weather where apptemp = '20'; 

정확한 데이터를 반환합니다.

"20.1"- 않습니다.

SELECT HEX(apptemp) FROM weather; 

이 16 진수의 열 값을 표시합니다 :

+1

붙여 넣을 때 3 개의 공백이있는 것처럼 보입니다. 그렇다면 Ed Gibbs의 답은 문자열의 시작 부분에서 202020을 제공해야합니다. 문자열은 apptemp에있는 20 개로 혼동되어서는 안됩니다. – GolezTrol

+0

이 예제에서'apptemp'는 * variable *로 보이지 않습니다. 그것은'날씨'테이블에있는 컬럼에 대한 * 식별자 * 인 것처럼 보입니다. (쿼리에서 프로 시저 변수를 사용할 수는 있지만 MySQL 저장 프로그램의 컨텍스트에 있어야하며 여기서는 그렇지 않습니다.) – spencer7593

답변

2

은 내가 HEX 기능을 사용하십시오. 검색 할 주요 16 진수 값은 00 (ASCII NUL), 09 (탭) 및 20 (공백)이지만 다른 "보이지 않는"값이 많습니다. 육각 팁

SELECT apptemp, HEX(apptemp) FROM weather; 
+0

결과를 해석하는 방법을 설명해야합니다. – Barmar

+0

당신은 평소와 같이, @ 바르 마 :) 나는 그렇게 할 것입니다. –

0

감사합니다 : 당신이 값의 평범하고 괴짜 버전을 볼 수 있도록

그것은 그것의 16 진수 값과 함께 열을 쿼리하는 것이 더 쉬울 것입니다.

데이터 유형이 부동 소수 (float)이므로 그 원인으로 보입니다.

mysql float data not selecting in where clause

세트 진수로하고 지금 작업.

관련 문제