如何检查 Teradata 中的列是 CASESPECIFIC 还是 NOT CASESPECIFIC

How to check if column in Teradata is CASESPECIFIC or NOT CASESPECIFIC

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

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

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

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

是否有任何选项可以检查?

编辑

正如@Fred 提到的:

HELP COLUMN returns the same "Uppercase" flag values as dbc.ColumnsV. And for Teradata JDBC, the ResultSetMetadata interface (resultset.getMetaData) has the method isCaseSensitive(columnPosition)

我以前没用过,但是看看dbc.columns中的UpperCaseFlag字段。来自 Teradata(数据字典)手册:

Possible Values for UpperCaseFlag

U - Uppercase, not specific
C - Not uppercase, specific
N - Not uppercase, not specific
B - Both

Note: Case flags U, C, and B are valid only for CHAR, VARCHAR, and LONG VARCHAR columns.

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

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' 选项。测试一下,看看它是如何工作的。