【发布时间】:2017-10-08 18:21:14
【问题描述】:
我想获取所有 teradata 架构名称并将其显示给用户。我的架构很少,名称中有超过 35 个字符。我试图从 DBC.Databases 中获取模式,但模式名称在元数据表中被截断为 30 个字符。是否有任何元数据表,我可以从中获得完整的架构名称而无需截断
【问题讨论】:
我想获取所有 teradata 架构名称并将其显示给用户。我的架构很少,名称中有超过 35 个字符。我试图从 DBC.Databases 中获取模式,但模式名称在元数据表中被截断为 30 个字符。是否有任何元数据表,我可以从中获得完整的架构名称而无需截断
【问题讨论】:
试试DBC.DatabasesV。一般不会有 30 个字符的限制。
如果您查看定义,DBC.Databases(没有尾随“V”)是 DBC.DBase 顶部的视图。该视图中的DatabaseName 字段定义为:
CAST(SUBSTRING(TRANSLATE(DBase.DatabaseName USING UNICODE_TO_LOCALE WITH ERROR) FROM 1 FOR 30)
AS CHAR(30)) (NAMED DatabaseName),
DBC.DatabasesV(带有尾随“V”)也指向同一个基础表,但上面没有相同的 CAST
DBase.DatabaseName (NAMED DatabaseName),
【讨论】:
CHAR(30) LATIN 切换到 VARCHAR(128) UNICODE,从那时起旧的 dbc-views(没有 V)已被弃用...