BLOG main image
분류 전체보기 (28)
루비 (3)
glassfish (1)
건아 (1)
RFC 한글 (0)
TIP (5)
VCS(Version Control System) (3)
perl (4)
java (2)
android (0)
javascript&Jquery (2)
기술문서 번역 (0)
사이베이스(ASE) (3)
용어 (2)
GAE&GCP (0)
사는 이야기 (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2013. 7. 4. 15:11

7년여를 살던 일본에서 대지진 이후, 아내와 딸아이의 얼굴을 보며 결심을 했더랬죠. 돌아가야겠구나...  이 곳에 좋은 친구들과 지인들을 두고 떠나는 마음은 아프지만 딸아이 생각하면 머뭇거릴 틈이 없었습니다.


지진발생 직후 회사에서는 고국으로 돌아가서 당분간 원격으로 일해 달라는 요청(?)을 받고 국내에 두 달정도 머무르다가 다시 돌아온 지 얼마 지나지 않아 완전 귀국을 하겠다고 불쑥 말하기가 어려운 상황이었지만 CTO와 CEO가 모두 잘 이해해 주었습니다. 유일한 외국인이었기에 회사차원에서 정말 많은 배려를 해 주었었는데.... 아직도 고맙고 많이 기억나는 회사입니다.


한 달전에 남아 계시던 지인 한 분이 또 가족을 이끌고 귀국을 하셨군요..방사능 상황이 여전히 심각한가요?


아무튼 저는 귀국하자마자 바로 취업을 했습니다. 네...한국 IT시장에 발을 들인 것이지요. 


일본에서 오랜 습관처럼 길들여진 업무스타일이 이 곳에서는 불필요하고 시간낭비 요소로 받아들여지는 것이 한심스럽더군요. 나중엔 결국 제가 제안했던 것, 받아들여지지 않아 혼자만 하고 있던 것을 내 놓으라더군요.


왜 처음부터 이런 제안을 하지 않았냐며 오히려 나무랍니다. 제안 했습니다. 분명히 했었구요. 거절하셨었잖아요?  그랬더니 그 때 그럼 왜 더욱 강하게 어필하지 않았냐? 또 저를 나무랍니다. 그저 웃습니다.


제가 얻거나 잃은 것은,

줄어든 연봉, 줄어든 휴가, 줄어든 가족과의 시간, 줄어든 머리카락과 체력, 늘어난 한국인맥 정도인 것 같습니다.


제 성격탓일까요? 한국은 피곤하군요...

그래도 늘어난 인맥과 그 분들이 스카웃 제의를 해 주시니 그거 하나는 긍정적인 것 같습니다.


가끔은 꿈을 꿉니다. 일본에서 회사 동료들과 수다떨던 창가에 서 있는 꿈을요... 창가에서 내려다 보이던 신바시역과 바삐 움직이던 사람들을 보며 어디로 가는 사람들일까? 라고 생각하던 제 모습을.....


모든게 그립네요. 함께 스터디했던 분들도 보고 싶고 그 때 했던 스터디를 계속 하고 싶고...

2013. 7. 2. 12:43

금액 등의 화폐값을 표시할 때 사이베이스에서 부정확한 소수점 결과를 보여주는 사례가 종종 발생함.

float은 수치연산에 부적합하며 double precision을 쓰라는 사이베이스 엔지니어의 권고를 받아들여

double precision으로 처리하였으나 역시 연산에 부정확함. 


이 부정확하다는 것은 SQL 클라이언트툴에서 보여지는 결과값이 3.938인 경우(그리드형태) 이를 텍스트형태로 변환해 보거나 그리드의 셀을 더블클릭했을 때 3.9383828381 과 같은 결과가 나와 화면상에 3.9383828381 이 그대로 출력되어버리는 문제였음.


 ASIS시스템은 sybase ASE 12.0 이며 노츠로 개발된 화면이었고 문제가 발생한 적이 없었다 함. 그러나 차세대는 sybase ASE 15.5이며 전자정부프레임워크+웹스퀘어 기반의 화면이나 문제가 발생하므로 아래와 같은 형태로 사이베이스 엔지니어가 조치를 취해 줌.


select CASE WHEN amt=0 THEN '0'

       /*제약사항 

          double  경우 48개의 유효 자리 숫자 가짐.

          Decimal 경우 38개의 유효 자리 숫자 가짐. 

       

        * 알고리즘 

          -- left 0 padding remove  

         select substring(ColumnName, patindex('%[^0]%',ColumnName), char_length(ColumnName) )

         

         -- 오른쪽 0 padding remove

         reverse ( left 0 padding (reverse (columnName)  )

         

         -- pattern index의 문제점 

         0.00000... 일 경우 처리 에러발생 --> case 문에서 분기처리   

        */

        

       ELSE reverse(substring(reverse( convert(VARCHAR, convert(DECIMAL(30,8), amt)) ), patindex('%[^0]%',reverse(convert(VARCHAR, convert(DECIMAL(30,8), amt)))), char_length( convert(VARCHAR, convert(DECIMAL(30,8), amt)))))

       END AS AMT_STRING

FROM <table_name> 

'사이베이스(ASE)' 카테고리의 다른 글

사이베이스 날짜 표현 형식  (0) 2013.07.02
사이베이스 암호화  (0) 2013.07.02
2013. 7. 2. 12:21

사이베이스의 날짜 표현 형식은 아래와 같다.


Style number

 설명 

 0

 Aug 27 2007 5:28PM

 1

 08/27/07

 2

 07.08.27

 3

 27/08/07

 4

 27.08.07

 5

 27-08-07

 6

 27 Aug 07

 7

 Aug 27, 07

 8

 17:23:35

 9

 Aug 27 2007 5:28:08:563PM

 10

 08-27-07

 11

 07/08/27

 12

 070827

 13

 07/27/08

 14

 08/07/27

 15

 27/07/08

 16

 Aug 23 2007 17:28:08

 18

 15:17:08

 19

 5:11:39:086PM

 20

 17:12:30:633

 21

 07/08/27

 22

 07/08/27

 100

 Aug 27 2007 5:28PM

 101

 08/27/2007

 102

 2007.08.07

 103

 27/08/2007

 104

 27.08.2007

 105

 27-08-2007

 106

 27 Aug 2007

 107

 Aug 27, 2007

 108

 17:28:08

 109

 Aug 27 2007 5:28:08:563PM

 110

 08-27-2007

 111

 2007/08/27

 112

 20070827

 113

 2007/27/08

 114

 08/2007/27

 115

 27/2007/08

 116

 Aug 23 2007 17:28:08

이게 무슨 말이냐....

> SELETC convert(CHAR,getdate(),112)
> 20130702

> SELECT convert(CHAR,getdate(),105)
> 02-07-2013

과 같이 나온다는 의미이다.   getdate() 대신에 DATETIME형식의 무슨 값이라면 위와 같이 쓸 수 있다.

여기에 dateadd 라는 함수를 사용하여 날짜형식의 다양한 컨트롤이 가능하다.

SELECT dateadd(year,-1, getdate())  :  현재 년도에서 1년을 뺀 값

SELECT dateadd(mm,-1, getdate())   : 현재 월에서 1월을 뺀 값

SELECT dateadd(day,-1, getdate())   : 현재 일에서 1일을 뺀 값


이런 정보를 바탕으로 내가 하고자 하는 것은 아래와 같다.


masterid는 MA-2013-BOND-00012 의 형태이다.

masterid의 내부에 있는 년도를 취득하여 3년전부터 현재 년도 까지의 데이타를 추출하고자 한다.


SELECT bbbb + ' / ' +  '본평가' + ' /' + convert(char, rcdate,112) , aaaa

FROM xxxx 

WHERE aaaa=(SELECT aaaa FROM xxxx WHERE aaaa='xx-xxxx-xxxx-xxxxx') 

AND cccc='01'  

AND substring(xxxx,4,4) BETWEEN substring(convert(CHAR, dateadd(year,-3,getdate()), 112),1,4) AND substring(convert(CHAR, getdate(), 112),1,4)

ORDER BY xxxx


아래와 같은 결과가 출력된다.


BOND / 본평가 /20110927                       MA-2011-BOND-00911

IR / 본평가 /19000101                       MA-2011-IR-00077

[출처] Sybase 함수 모음|작성자 세상은나




'사이베이스(ASE)' 카테고리의 다른 글

사이베이스 float 타입의 문제점  (0) 2013.07.02
사이베이스 암호화  (0) 2013.07.02