Db2 11.5 의 스칼라 함수 변경사항
Db2 11.5 에는 다수의 새 스칼라 함수 및 변경된 스칼라 함수가 포함되어 있습니다.
변경사항을 검토하여 기존 애플리케이션에 영향을 미칠 수 있는 사항을 파악하고 이를 조정해야 하는지 여부를 결정하십시오.
변경사항
- 로케일 이름이 잘못되면 비결정적 결과가 발생할 수 있음
- 예를 들어, 다음 명령문의 경우
다음을 리턴합니다.VALUES TRUNC(TIMESTAMP('2400-12-23-01.55.55.003456789012', 10), 'DAY', 'asdf 1.5: en_US');'asdf 1.5: en_US'이는 올바르지 않은 로케일 레벨입니다. 사용 중인 ICU 버전에 따라 결과가 다를 수 있습니다. 주의 첫 번째 요일이 일요일 또는 월요일일 수 있습니다.
자세한 정보는 http://userguide.icu-project.org/locale#TOC-Locales-and-Services 를 참조하십시오.
- 독일어(de_DE) 월 약어에 추가 "."가 있음
- 예를 들어, 다음 명령문의 경우
다음을 리턴합니다.SELECT VARCHAR_FORMAT('2015-10-10-04.05.19.934567','MON','de_DE') from sysibm.sysdummy1;
이 변경 이전에는 이 명령문이 다음을 리턴할 수 있습니다.OKT.OKT - es_ES 로케일의 자오선 값에 추가 공백이 있음
- 이제
a. m.및p. m.값의 중간에 추가 공백이 있습니다. 예를 들면, 다음과 같습니다.
다음을 리턴합니다.values to_char(timestamp('2008-1-01-23.59.59.000000'),'Mon dd, YYYY hh12:mi:ss PM','es_ES')
이 변경 이전에는 이 명령문이 다음을 리턴할 수 있습니다.Ene. 01, 2008 11:59:59 p. m.Ene. 01, 2008 11:59:59 p.m. - 로케일에 따라 기본 출력 문자열 VARCHAR_FORMAT 함수가 변경됨
예를 들어, 다음 명령문의 경우
values VARCHAR_FORMAT(timestamp_format('2008-06-20 01:23:45 AM','YYYY-MM-DD HH:MI:SS PM'))zh_TW로케일의 경우 다음을 리턴합니다.
이 변경 이전에는 이 명령문이 다음을 리턴할 수 있습니다.2008年6月20日 上午1:23:452008/6/20 上午1:23:45en_US로케일의 경우 다음을 리턴합니다.
이 변경 이전에는 이 명령문이 다음을 리턴할 수 있습니다.Jun 20, 2008, 1:23:45 AM'Jun 20, 2008 1:23:45 AM'de_DE로케일의 경우 다음을 리턴합니다.
이 변경 이전에는 이 명령문이 다음을 리턴할 수 있습니다.20.06.2008, 01:23:4520.06.2008 01:23:45
- regexp_replace에서 "$"를 잘못 사용하면 오류가 리턴됨
정규식 처리의 대체 문자열에 있는 "$"는 캡처 그룹을 나타냅니다. 그 다음에 정수가 옵니다. "$"를 사용하면 이스케이프 처리됩니다.
예를 들어 다음 명령문을 참조하십시오.
regexp_replace("aba", "b", "\\$" ) db2 "SELECT REGEXP_REPLACE ('aba', 'b', '\\$' ) FROM sysibm.sysdummy1" 1a$a 1 record(s) selected. db2 "SELECT REGEXP_REPLACE ('aba', 'b', '$' ) FROM sysibm.sysdummy1" 1SQL0171N 루틴의 위치 "3"에 있는 매개변수 인수의 데이터 유형, 길이 또는 값으로 인해 명령문이 처리되지 않았습니다. "SYSIBM.REGEXP_REPLACE"가 올바르지 않습니다. 매개변수 이름: "". SQLSTATE=22546