如何从元数据中了解列是已签名还是未签名?

How to understand whether a column is signed or unsigned from metadata?

我正在获取数据库模式的元数据。我需要查明列是无符号数据类型还是有符号数据类型。我如何从获取元数据的结果集中找到它。哪一栏会给我相关信息?我的问题是如何从 java 代码中获取该列是已签名还是未签名?提供此信息的列标签是什么?

更新
从 java 结果集中,您可以了解该列是已签名还是未签名。以下面的代码为例:

ResultSet res=stmt.executeQuery("select * from tableName where 1<0");//just making sure no row is retrieved as we dont need any here..
ResultSetMetaData rsmd=res.getMetaData();
boolean isColumnOneSigned= rsmd.isSigned(1);

isSigned(int columnNumber):表示指定列中的值是否为有符号数。 您可以找到有关 ResultSetMetaData here 的更多信息。非常有用class。

在数据库级别做同样的事情:-
对于 MySQL 属性存储在 COLUMN_TYPE in INFORMATION_SCHEMA.COLUMNS.

mysql> show columns from ttypes;
+---------------+----------------------+------+-----+---------+-------+
| Field         | Type                 | Null | Key | Default | Extra |
+---------------+----------------------+------+-----+---------+-------+
| cid           | int(10) unsigned     | YES  |     | NULL    |       |
+---------------+----------------------+------+-----+---------+-------+

1 row in set (0.00 sec)

你必须解析出Type的内容,并在其中找到unsigned,或者not unsigned它不会为signed列放入任何东西。 您可以选择查询

select COLUMN_NAME,COLUMN_TYPE from information_schema.COLUMNS where TABLE_NAME='ttypes' and COLUMN_TYPE LIKE '%unsigned%'