programing

MariaDB SQL 쿼리가 select 문에서 잘린 숫자를 반환합니다.

copysource 2023. 8. 23. 23:57
반응형

MariaDB SQL 쿼리가 select 문에서 잘린 숫자를 반환합니다.

Maria DB에서 데이터를 가져오려고 합니다.스키마의 데이터 유형은 DECIMAL(12, 8)입니다.다음 쿼리를 사용하여 쿼리할 때 프로그램에 있습니다.소수점 이하 4자리(또는 3자리)까지 자르기도 하고 반올림하기도 합니다.

select CAST(FORMAT(latitude, 100) AS FLOAT) latitude from mytable

36.173을 반환합니다. DB에는 36.17298200으로 저장되어 있습니다. 저는 36.172982로 반환하기를 원합니다.

계산에 숫자를 사용하려면 숫자를 사용하면 됩니다.변환 안 함, 안 함CAST.

소수점 이하 6자리로 표시하려면 다음을 수행합니다.SELECTing:

SELECT FORMAT(latitude, 6) ...

FORMAT(..., 100)소수점 이하의 자리를 많이 줄 것입니다.

FLOAT소수점 이하의 유의한 자리 수가 6개 또는 7개 이상인지 구별하기에 충분한 정밀도를 가지고 있지 않습니다.즉, 여기에 있는 첫 번째와 세 번째 숫자는 에서 가장 가까운 대표 가능한 숫자입니다.FLOAT:

x4210b122 --> 36.172981262207
              36.17298200
x4210b123 --> 36.172985076904

두 배:

x40421624463065f9 --> 36.1729819999999975

위도 및 경도의 경우:

FLOAT  has a resolution of 1.7 m or 5.6 ft -- good enough for Vehicles
DECIMAL(8,6)               16 cm    1/2 ft -- Friends in a mall

공식 MySQL 문서에 따르면:

DECTION 및 NUMBERICAL 유형에는 정확한 숫자 데이터 값이 저장됩니다.이러한 유형은 화폐 데이터와 같이 정확한 정확성을 유지하는 것이 중요할 때 사용됩니다.MySQL에서는 NUMERICAL이 DECTICAL로 구현되므로 DECTICAL에 대한 다음 설명은 NUMERICAL에도 동일하게 적용됩니다.

부동 소수점 유형(대략 값) - FLOAT, DOUBLE

따라서 다음과 유사한 내용을 작성해야 합니다.

select CAST(FORMAT(latitude, 100) AS DECIMAL(8,6)) latitude from mytable

8은 총 자릿수이고 6은 정밀도입니다.

언급URL : https://stackoverflow.com/questions/64037536/mariadb-sql-query-returns-truncated-numbers-from-select-statement

반응형