CAST DECIMAL을 INT로
나는 시도하고있다 :
SELECT CAST(columnName AS INT), moreColumns, etc
FROM myTable
WHERE ...
여기에서 도움말 FAQ를 보았습니다 : http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html , 그렇게 할 수 말하지만 CAST(val AS TYPE)
작동하지 않습니다.
10 진수를 정수로 변환하려고하면 실제 값은 223.00이고 223을 원합니다.
다음 과 같이 FLOOR 함수를 시도 할 수 있습니다 .
SELECT FLOOR(columnName), moreColumns, etc
FROM myTable
WHERE ...
소수 자리를 생략 할 수 있다는 것을 알고 있다면 FORMAT 함수를 사용해 볼 수도 있습니다 .
SELECT FORMAT(columnName,0), moreColumns, etc
FROM myTable
WHERE ...
두 기능을 결합 할 수 있습니다.
SELECT FORMAT(FLOOR(columnName),0), moreColumns, etc
FROM myTable
WHERE ...
링크 한 기사에서 :
유형은 다음 값 중 하나 일 수 있습니다.
바이너리 [(N)]
문자 [(N)]
데이트
날짜 시간
소수 [(M [, D])]
서명 됨 [정수]
시각
부호 없음 [정수]
SIGNED
대신 시도INT
이 목적을 위해 mysql 에서 더 최적화 된 방법 * :
SELECT columnName DIV 1 AS columnName, moreColumns, etc
FROM myTable
WHERE ...
사용 DIV 1 는
엄청난 속도 향상 을 통해 FLOOR 같은 문자열 기반의 기능은 말할 것도 없고 , FORMAT을mysql> SELECT BENCHMARK(10000000,1234567 DIV 7) ;
+-----------------------------------+
| BENCHMARK(10000000,1234567 DIV 7) |
+-----------------------------------+
| 0 |
+-----------------------------------+
1 row in set (0.83 sec)
mysql> SELECT BENCHMARK(10000000,1234567 / 7) ;
+---------------------------------+
| BENCHMARK(10000000,1234567 / 7) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (7.26 sec)
mysql> SELECT BENCHMARK(10000000,FLOOR(1234567 / 7)) ;
+----------------------------------------+
| BENCHMARK(10000000,FLOOR(1234567 / 7)) |
+----------------------------------------+
| 0 |
+----------------------------------------+
1 row in set (8.80 sec)
(*) 참고하십시오 : Grbts에서 지적했듯이 부호없는 / 양수 값과 함께 사용할 때 DIV 1의 동작에 유의하십시오.
이것을 사용하십시오
mysql> SELECT TRUNCATE(223.69, 0);
> 223
여기 에 링크가 있습니다.
floor ()와 DIV 1 사이에는 중요한 차이가 있습니다. 음수의 경우 작동하지 않습니다. DIV 1은 정수 부분 (부호화 된대로 캐스트)을 반환하는 반면, floor (x)는 "x보다 크지 않은 가장 큰 정수 값"(설명서에서)을 반환합니다. 따라서 select floor (-1.1) 는 -2가되고 select -1.1 div 1 은 -1이됩니다.
CAST () 함수는 MySQL에서 "공식"데이터 유형 "INT"를 지원하지 않으며 지원 되는 유형 목록에 없습니다 . MySQL에서는 "SIGNED"(또는 "UNSIGNED")를 대신 사용할 수 있습니다.
CAST(columnName AS SIGNED)
그러나 이것은 MySQL 전용 (표준화되지 않음)으로 보이므로 다른 데이터베이스에서는 작동하지 않을 수 있습니다. 최소한 이 문서 (Second Informal Review Draft) ISO / IEC 9075 : 1992, 데이터베이스 는 섹션에 "SIGNED"/ "UNSIGNED"를 나열하지 않습니다 4.4 Numbers
.
그러나 DECIMAL은 표준화되고 MySQL에서 지원되므로 다음은 MySQL (테스트 됨) 및 기타 데이터베이스에서 작동합니다.
CAST(columnName AS DECIMAL(0))
MySQL 문서 에 따르면 :
스케일이 0이면 DECIMAL 값에는 소수점이나 소수 부분이 포함되지 않습니다.
숫자가 항상 .00으로 끝나지 않는 경우에도 ROUND ()가 있습니다. ROUND (20.6)는 21을, ROUND (20.4)는 20을 제공합니다.
당신은 시도 할 수 있습니다 :
SELECT columnName1, CAST(columnName2 AS SIGNED ) FROM tableName
시험 cast (columnName as unsigned)
unsigned는 양수 값입니다.
당신이 다음 음의 값을 포함 할 경우 cast (columnName as signed)
,
기호 (음성 포함)과 부호의 차이 (부호의 두 배 크기지만, 음이 아닌)를
1 센트 : 공백 b / w CAST 및 (표현식) 없음. 즉, CAST (서명 된 열 이름).
참고 URL : https://stackoverflow.com/questions/8537037/cast-decimal-to-int
'ProgramingTip' 카테고리의 다른 글
몽구스 연결 오류가 (0) | 2020.11.16 |
---|---|
MongoDB에서 Enum을 많이로 저장 (0) | 2020.11.16 |
twitter-bootstrap에서 텍스트 영역의 열을 어떻게 사용합니까? (0) | 2020.11.16 |
오류 메시지 : PDB 파일을 찾거나 열 수 없습니다. (0) | 2020.11.16 |
fopen 비추천 경고 (0) | 2020.11.16 |