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진수를 int로 변환하려고 하는데, 실제 값은 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 ...
이 목적을 위해 mysql에서 보다 최적화된 방법*:
SELECT columnName DIV 1 AS columnName, moreColumns, etc
FROM myTable
WHERE ...
DIV 1을 사용하면 FORMAT 등의 문자열 기반 기능은 말할 것도 없고 FLOOR보다 속도가 크게 향상됩니다.
(Roland Bouman의 블로그에서 가져온 그래프)
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의 동작에 주의하십시오.
링크한 기사:
type은 다음 값 중 하나입니다.
이진수[(N)]
문자[(N)]
날짜.
날짜
십진수[(M[,D])]
서명 완료 [INTEGER]
시간을
서명 없음 [INTEGER]
해라SIGNED
대신INT
CAST() 함수는 MySQL에서 "공식" 데이터 유형 "INT"를 지원하지 않습니다. 지원되는 유형 목록에 없습니다.MySQL에서는 대신 "SIGNARED"(또는 "UNSIGNARED")를 사용할 수 있습니다.
CAST(columnName AS SIGNED)
그러나 이것은 MySQL에 특화된(표준화되지 않은) 것처럼 보이므로 다른 데이터베이스에서는 작동하지 않을 수 있습니다.적어도 이 문서(제2차 비공식 검토 초안) ISO/IEC 9075:1992, 데이터베이스는 "SIGNARED"/를 나열하지 않는다.서명되지 않음" 섹션의4.4 Numbers
.
그러나 DIMAL은 MySQL에서 표준화되고 지원되므로 MySQL(테스트 완료) 및 기타 데이터베이스에서는 다음이 작동합니다.
CAST(columnName AS DECIMAL(0))
MySQL 문서에 따르면:
스케일이 0인 경우 DECIMAL 값에는 소수점이나 소수점이 포함되지 않습니다.
이것을 사용하다
mysql> SELECT TRUNCATE(223.69, 0);
> 223
여기 링크가 있습니다.
floor()와 DIV 1 사이에는 중요한 차이가 있습니다.음수의 경우, 그들은 다르게 행동합니다.DIV 1은 서명된 대로 정수 부분을 반환하고 floor(x)는 "x보다 크지 않은 가장 큰 정수 값"을 반환합니다(매뉴얼 참조).따라서 : floor(-1.1)를 선택하면 -2가 되고 -1.1 div 1을 선택하면 -1이 됩니다.
다음을 시도해 보십시오.
SELECT columnName1, CAST(columnName2 AS SIGNED ) FROM tableName
숫자가 반드시 .00으로 끝나지 않으면 ROUND()도 있습니다.ROUND(20.6)는 21, ROUND(20.4)는 20이 됩니다.
★★를 해 보세요.cast (columnName as unsigned)
부호 없음은 양수 값만 해당됩니다.
값을 하려면 , 「」를 해 주세요.cast (columnName as signed)
,
포함음수 포함)의 부호 는 두 음수는 )의 차이
1 cent: 공백이 없는 CAST 및 (식). 즉, CAST(columnName AS SIGNED)입니다.
언급URL : https://stackoverflow.com/questions/8537037/cast-decimal-to-int
'itsource' 카테고리의 다른 글
NumPy 어레이를 다른 NumPy 어레이에 연결합니다. (0) | 2022.09.28 |
---|---|
PHP에서 REST API 호출 (0) | 2022.09.28 |
C에서 참조로 통과 (0) | 2022.09.28 |
Python에서 epoch(unix time) 이후 datetime 개체를 밀리초로 변환하려면 어떻게 해야 합니까? (0) | 2022.09.28 |
슬라이싱에 대해서 (0) | 2022.09.28 |