如何从元数据中了解列是已签名还是未签名?
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%'
我正在获取数据库模式的元数据。我需要查明列是无符号数据类型还是有符号数据类型。我如何从获取元数据的结果集中找到它。哪一栏会给我相关信息?我的问题是如何从 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%'