연말정산 때문에 가족관계증명서 발급을 위해 법원 사이트에 갔다.

그런데 이만큼을 설치 해야 한단다.

고작 프린트 한장 하는데 뭔 놈의 잡다한 프로그램을 이렇게나 많이 깔라는 건지....

이게 IT 강국이라는 대한민국 정부 사이트의 슬픈 현실이다.

울며겨자먹기로 꾸역꾸역 설치 한 후, 증명서를 인쇄 하고 난 다음

다시 주민등록등본 발급을 위해 민원24 사이트로 갔다.

그런데 또 설치를 하란다.

아 진짜.. 짜증.

정부 사이트 간에는 좀 표준화를 해서 한번만 설치할 수 있게 하든지 해야지

사이트 마다 재각각 이면 어쩌겠다는 건지... 




'생각' 카테고리의 다른 글

프린트 한 장 하자고...  (0) 2019.01.24
델파이의 상승세  (2) 2017.03.10
Microsoft 사의 Wunderlist 인수를 보며  (0) 2015.06.04
IT업체선정의 중요성  (0) 2011.02.10
역시 오너...  (0) 2010.04.28
JD Edwards의 문제점  (4) 2010.04.09
블로그 이미지

해나야

모 업체 전산실에 종사 하고 있습니다. 앞으로 공부하고 근무 중 겪는 일들로 채워 볼까 합니다. 방문하시면 댓글,방명록 부탁 드립니다.

SQL 서버에서 서로 다른 데이터 타입간에 연산을 하게 되면
연산 전에 데이터 형식을 묵시적으로 형변환하게 되며,
이는 최종 결과 값의 데이터 형식이 된다.
그런데 여기에는 우선순위가 있기 때문에 때때로 연산결과 값에서 소수점이 사라지거나 오차가 발생 할 수 있으므로 주의해야 한다.

우선순위는 다음과 같다 (참조: https://docs.microsoft.com/ko-kr/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-server-2017)

  1. 사용자 정의 데이터 형식(가장 높음)
  2. sql_variant
  3. xml
  4. datetimeoffset
  5. datetime2
  6. datetime
  7. smalldatetime
  8. date
  9. time
  10. float
  11. real
  12. decimal
  13. money
  14. smallmoney
  15. bigint
  16. int
  17. smallint
  18. tinyint
  19. bit
  20. ntext
  21. text
  22. image
  23. timestamp
  24. uniqueidentifier
  25. nvarchar(nvarchar(max) 포함)
  26. nchar
  27. varchar (varchar(max) 포함)
  28. char
  29. varbinary (varbinary(max) 포함)
  30. binary(가장 낮음)

그리고 피연산자에 숫자 상수값이 들어가는 경우 상수의 표현 방식에 따라 데이터형이 결정 되므로 역시 주의 해야 한다.

  1. 이진상수 : 0x 접미사 (16진수)
  2. integer 상수: 소수점 없는 정수
  3. 10진수(decimal, numeric) 상수: 숫자에 소수점이 포함
  4. float 및 real 상수: 과학 표기법 (예: 0.5E-1)

함수의 결과 값도 원래 컬럼의 데이터타입과 다른 경우가 있으므로 주의 해야 한다.
  1. SUM() :  decimal에 대한 계산 결과는 무조건 decimal(38, s) 가 된다.
                 s는 원래 decimal 타입 값의 소수점이하 자리 수.
                 전체 자리수가 무조건 38이 되므로 주의!
  2. CEILING(), FLOOR() : decimal에 대한 결과는 decimal(p, 0)이 된다.
                                p는 원래 decimal 타입 값의 전체 자리 수.

decimal 타입간의 연산 결과는 두 decimal 타입 중 더 넓은 범위의 값을 저장할 수 있는 타입이 우선순위를 가지는 것으로 보인다.
예를 들어 decimal(38, 5) 와 decimal(38, 2) 의 결과는 decimal(38, 2)로 된다.
소수점 이하 정밀도 보다는 정수 부분이 더 큰/작은 넓은 범위의 숫자를 저장할 수 있는 타입에 우선순위가 있는  것 같다.
특히 decimal에 대한 SUM()의 결과는 무조건 decimal(38, s)이 되고 CEILING()은 decimal(p, 0)이 되므로
만약 SUM()에 의하여 decimal(38, 5)가 되고, CEILING()에 의해 decimal(38, 0)이 된 경우 그 결과는 decimal(38, 0)이 되어
데이터에서 소수점이하 값이 사라질 수 있으므로 주의 해야 한다.

SELECT * 
INTO   #c 
FROM   (SELECT Sum(CONVERT(DECIMAL(38, 5), 123.45)) AS x 
        UNION 
        SELECT Ceiling(CONVERT(DECIMAL(38, 5), 456.78)) AS x) a 
go 

SELECT * 
FROM   #c 



블로그 이미지

해나야

모 업체 전산실에 종사 하고 있습니다. 앞으로 공부하고 근무 중 겪는 일들로 채워 볼까 합니다. 방문하시면 댓글,방명록 부탁 드립니다.

java에서 compile 할 경우, 한글을 제대로 인식 하지 못해서 다음과 같은 오류가 발생할 때가 있다.

$ javac HelloWorld.java                                                                                               
HelloWorld.java:4: error: unmappable character for encoding ASCII                                                     
        System.out.println("??????");                                                                                 
                            ^  


이럴 때는 다음과 같이 Charterset를 알려 주면 정상적으로 컴파일 된다.

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8


또는 컴파일러 옵션을 이용 해도 된다.

javac HelloWorld.java -encoding UTF8


이 때 java 파일은 UTF8(without BOM) 형식 으로 저장되어 있어야 한다.

블로그 이미지

해나야

모 업체 전산실에 종사 하고 있습니다. 앞으로 공부하고 근무 중 겪는 일들로 채워 볼까 합니다. 방문하시면 댓글,방명록 부탁 드립니다.