복붙노트

[SQL] 자르기 (하지 라운드) SQL Server의 소수점

SQL

자르기 (하지 라운드) SQL Server의 소수점

나는 자르거나 반올림하지 않고 SQL에서 추가 소수점을 드롭하는 최선의 방법을 결정하기 위해 노력하고있어. 예를 들면 :

declare @value decimal(18,2)

set @value = 123.456

이 자동으로 라운드 @value는 대부분의 경우에 좋은 123.46 될 수 있습니다. 그러나,이 프로젝트를 위해, 그 필요하지 않습니다. 내가 필요하지 않은 소수를 절단하는 간단한 방법이 있나요? 나는 소수의 왼쪽 () 함수 및 변환 등을 사용할 수 있습니다 알고 있습니다. 다른 방법이 있습니까?

해결법

  1. ==============================

    1.

    select round(123.456, 2, 1)
    
  2. ==============================

    2.

    ROUND ( 123.456 , 2 , 1 )
    

    때 세 번째 매개 변수! = 0이 라운드보다는 절단

    http://msdn.microsoft.com/en-us/library/ms175003(SQL.90).aspx

    통사론

    ROUND ( numeric_expression , length [ ,function ] )
    

    인수

  3. ==============================

    3.

    SELECT Cast(Round(123.456,2,1) as decimal(18,2))
    
  4. ==============================

    4.여기에 내가 잘라야 할 수 둥근 아니었다 방법이있다 :

    여기에 내가 잘라야 할 수 둥근 아니었다 방법이있다 :

    select 100.0019-(100.0019%.001)
    

    반환 100.0010

    그리고 당신의 예 :

    select 123.456-(123.456%.001)
    

    반환 123.450

    이제 제로 결말을 제거하려는 경우, 단순히 캐스트 :

    select cast((123.456-(123.456%.001)) as decimal (18,2))
    

    반환 123.45

  5. ==============================

    5.사실 세 번째 매개 변수는 아닌 값 둥근 것, 0 또는 1 또는 2, 무엇이든.

    사실 세 번째 매개 변수는 아닌 값 둥근 것, 0 또는 1 또는 2, 무엇이든.

    CAST(ROUND(10.0055,2,0) AS NUMERIC(10,2))
    
  6. ==============================

    6.라운드 선택적 매개 변수가 있습니다

    라운드 선택적 매개 변수가 있습니다

    Select round(123.456, 2, 1)  will = 123.45
    Select round(123.456, 2, 0)  will = 123.46
    
  7. ==============================

    7.당신은 소수를 원하거나하지?

    당신은 소수를 원하거나하지?

    사용 그렇지 않은 경우

    select ceiling(@value),floor(@value)
    

    당신이 0 함께 할 경우 라운드를 수행합니다

    select round(@value,2)
    
  8. ==============================

    8.라운딩 솔루션 예를 또 다른 잘라 내기.

    라운딩 솔루션 예를 또 다른 잘라 내기.

        Convert 71.950005666 to a single decimal place number (71.9)
        1) 71.950005666 * 10.0 = 719.50005666
        2) Floor(719.50005666) = 719.0
        3) 719.0 / 10.0 = 71.9
    
        select Floor(71.950005666 * 10.0) / 10.0
    
  9. ==============================

    9.이것은 어떤 숫자의 소수 부분을 제거합니다

    이것은 어떤 숫자의 소수 부분을 제거합니다

    SELECT ROUND(@val,0,1)
    
  10. ==============================

    10.

    SELECT CAST(Value as Decimal(10,2)) FROM TABLE_NAME;
    

    소수점 후 2 개 값을 줄 것입니다. (MS SQL 서버)

  11. ==============================

    11.또 다른 방법은 ODBC TRUNCATE 함수이다 :

    또 다른 방법은 ODBC TRUNCATE 함수이다 :

    DECLARE @value DECIMAL(18,3) =123.456;
    
    SELECT @value AS val, {fn TRUNCATE(@value, 2)} AS result
    

    LiveDemo

    산출:

    ╔═════════╦═════════╗
    ║   val   ║ result  ║
    ╠═════════╬═════════╣
    ║ 123,456 ║ 123,450 ║
    ╚═════════╩═════════╝
    

    말:

    나는 내장 된 3 파라미터 세트 ROUND 함수를 1로 사용하는 것이 좋습니다.

  12. ==============================

    12.나는이 꽤 늦게 알고 있지만 나는 대답으로 표시되지 않는 년 동안이 트릭을 사용하고있다.

    나는이 꽤 늦게 알고 있지만 나는 대답으로 표시되지 않는 년 동안이 트릭을 사용하고있다.

    단순히 값에서 0.005을 빼고 (NUM, @ 2) 라운드를 사용합니다.

    귀하의 예 :

    declare @num decimal(9,5) = 123.456
    
    select round(@num-.005,2)
    

    반환 123.45

    그것은 자동으로 당신이 찾고있는 정확한 값으로 반올림을 조정합니다.

    그건 그렇고, 당신은 영화 사무실 공간에서 프로그램을 다시입니까?

  13. ==============================

    13.2 소수점으로 시점 이후 3 개 소수점 값을 변환하는이 코드를 사용 해보세요 :

    2 소수점으로 시점 이후 3 개 소수점 값을 변환하는이 코드를 사용 해보세요 :

    declare @val decimal (8, 2)
    select @val = 123.456
    select @val =  @val
    
    select @val
    

    출력은 123.46이며

  14. ==============================

    14.나는 당신이 단지 소수 값을 원한다고 생각, 이 경우 다음을 사용할 수 있습니다 :

    나는 당신이 단지 소수 값을 원한다고 생각, 이 경우 다음을 사용할 수 있습니다 :

    declare @val decimal (8, 3)
    SET @val = 123.456
    
    SELECT @val - ROUND(@val,0,1)
    
  15. ==============================

    15.이 질문은 정말 오래된하지만 아무도 라운드 하위 문자열을 사용하지 알고있다. (보통 8000 자입니다 SQL 서버에서 문자열의 제한) 라운드 정말 긴 숫자 이러한 장점과 기능 :

    이 질문은 정말 오래된하지만 아무도 라운드 하위 문자열을 사용하지 알고있다. (보통 8000 자입니다 SQL 서버에서 문자열의 제한) 라운드 정말 긴 숫자 이러한 장점과 기능 :

    SUBSTRING('123.456', 1, CHARINDEX('.', '123.456') + 2)
    
  16. ==============================

    16.나는 우리가 Hackerrank에있는 간단한 예제 솔루션을 훨씬 더 쉽게 갈 수 있다고 생각합니다 :

    나는 우리가 Hackerrank에있는 간단한 예제 솔루션을 훨씬 더 쉽게 갈 수 있다고 생각합니다 :

    SELECT TRUNCATE(MAX(LAT_N),4)
    FROM STATION
    WHERE LAT_N < 137.23453;
    

    솔루션 위는 당신에게 단순히 값이 4 개 소수점 포인트로 제한 만드는 방법 아이디어를 제공합니다. 당신은 낮추거나 위의 숫자 소수점 후, 당신이 원하는대로 4를 변경합니다.

  17. ==============================

    17.모드 (X, 1) 내가 생각하는 가장 쉬운 방법입니다.

    모드 (X, 1) 내가 생각하는 가장 쉬운 방법입니다.

  18. ==============================

    18.

    select convert(int,@value)
    
  19. from https://stackoverflow.com/questions/44046/truncate-not-round-decimal-places-in-sql-server by cc-by-sa and MIT license