如何检查Teradata中的列是否为CASESPECIFIC或NOT CASESPECIFIC

假设我有一个Teradata表,例如:

CREATE TABLE x (
  id int,nc CHAR(20) NOT CASESPECIFIC,nv VARCHAR(20) NOT CASESPECIFIC,c CHAR(20) CASESPECIFIC)

如何使用CASESPECIFIC或对Teradata的常规SQL查询来检查哪一列是NOT CASESPECIFIC,哪一列是JDBC

到目前为止,我已经测试了以下内容,看来它们没有提供此类信息:

是否有任何检查选项?

编辑

@Fred提到:

  

HELP COLUMN返回与dbc.ColumnsV相同的“大写”标志值。   对于Teradata JDBC,ResultSetMetadata接口   (resultset.getMetaData)具有isCaseSensitive(columnPosition)方法

abancoo 回答:如何检查Teradata中的列是否为CASESPECIFIC或NOT CASESPECIFIC

我以前没有使用过它,但是请看一下UpperCaseFlag中的dbc.columns字段。从Teradata(数据字典)手册中:

  

UpperCaseFlag的可能值

     

U-大写字母,不具体
  C-不大写,具体
  N-不大写,不具体
  B-两者

     

注意:区分大小写U,C和B仅对CHAR,VARCHAR和LONG VARCHAR列有效。

您可以使用以下查询进行测试:

SELECT 
  col.*,CASE WHEN col.UpperCaseFlag = 'C' THEN 'Y' ELSE 'N' END AS CaseSpecificFlag
FROM dbc.columnsV col
INNER JOIN dbc.tablesV t ON col.DatabaseName = t.DatabaseName 
  AND col.TableName = t.TableName AND t.tableKind = 'T' -- Only get tables
WHERE col.TableName = 'x'
AND col.DatabaseName = <database_name> -- Specify database name (if needed)
;

我不确定100%是否选择“ B”。测试一下,看看它如何工作。

本文链接:https://www.f2er.com/3095710.html

大家都在问