首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle在TZ_OFFSET()之后没有连接

Oracle在TZ_OFFSET()之后没有连接
EN

Stack Overflow用户
提问于 2017-03-24 16:03:52
回答 1查看 226关注 0票数 3

执行TZ_OFFSET后的级联似乎没有注册。示例:

代码语言:javascript
复制
SELECT '[' || TZ_OFFSET('Europe/Amsterdam') || ']' FROM DUAL

在以下方面的成果:

代码语言:javascript
复制
[+01:00

为什么TZ_OFFSET()之后的连接没有发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 17:37:48

这似乎是一个bug (1937516,我看不见;还有9861391,它指的是基本bug 17291158,我也看不见),再加上客户端的行为。在SQL*Plus或SQL Developer中,这看起来不错--有点像:

代码语言:javascript
复制
select '[' || tz_offset('Europe/Amsterdam') || ']' from dual;

'['||TZ_O
---------
[+01:00 ]

虽然从SQL Developer工作表中复制和粘贴它(就像这样显示它),但是它也失去了结束括号:

代码语言:javascript
复制
'['||TZ_O
---------
[+01:00

转储生成的值显示了问题:

代码语言:javascript
复制
select dump('[' || tz_offset('Europe/Amsterdam') || ']') from dual;

DUMP('['||TZ_OFFSET('EUROPE/AMSTERDAM')||']')
---------------------------------------------
Typ=1 Len=9: 91,43,48,49,58,48,48,0,93

请注意0字节,这是一个空字符,并造成混乱。

由于偏移量格式是固定的,您可以通过一个简单的substr()来避免这种情况。

代码语言:javascript
复制
select '[' || substr(tz_offset('Europe/Amsterdam'), 1, 6) || ']' from dual;

'['||SUB
--------
[+01:00]

select dump('[' || substr(tz_offset('Europe/Amsterdam'), 1, 6) || ']') from dual;

DUMP('['||SUBSTR(TZ_OFFSET('EUROPE/AMSTERDAM'),1,6)||']')
---------------------------------------------------------
Typ=1 Len=8: 91,43,48,49,58,48,48,93

..。或注释中提到的replace()trim()选项;或删除流氓字符的任何其他选项;甚至:

代码语言:javascript
复制
rtrim(tz_offset('Europe/Amsterdam'), chr(0))

由于在MoS中看不到bug,所以我不确定何时(或是否)修复了bug。它似乎存在于11.2.0.0中,我在11.2.0.4中看到了它--它可能在12c中被修复。我在12.1.0.2中没有看到它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43004158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档