因此,在SQL中,我们有以下查询来查找Server中列的系统数据类型ID;
select name, system_type_id from sys.columns where object_id = OBJECT_ID(N'sometable')给出了如下输出;
name system_type_id
rowid 56
Client 167
IsCurrent 104system_type_id表示该列的数据类型的int值。
然而,当我试图在MySQL中转换(找到一个等价的)时,我找不到列的数据类型的ID。下面是我到目前为止找到的查询;
SELECT column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'someSchema' AND TABLE_NAME = 'someTable';它提供了以下输出。
# column_name, data_type
'rowid', 'int'
'Client', 'varchar'
'IsCurrent', 'tinyint'有什么建议可以让我在MySQL中实现早期的输出吗?
发布于 2015-05-08 16:02:45
我大约在4年前讨论过信息是怎样的_用MySQL实现的模式?。
SQL和PostgreSQL具有对象类型的ObjectID枚举(ObjectID)。MySQL使INFORMATION_SCHEMA数据库成为表、列和索引元数据的更简化的表示形式。元数据表是没有索引的临时内存表。
去年,在添加新表--内存使用量增加中,我讨论了当您增加表的数量时,INFORMATION_SCHEMA会对内存做什么。
相信我,将数据类型的oid添加到MySQL INFORMATION_SCHEMA中只会使INFORMATION_SCHEMA变得臃肿。在这个特殊的例子中,我非常感谢MySQL没有公开oid值。
如果您真的想了解mysql如何表示幕后的数据类型,我建议您参考“了解MySQL内部结构”(ISBN 0-596-00957-7)第48-53页。

这些页面在源代码中引用了sql/table.h和sql/field.h。您可以下载源代码并查看它。然后,为你自己判断如何和为什么不包括。
创造你自己的。例如,要为列创建do,请执行以下操作
DROP DATABASE IF EXISTS my_metadata;
CREATE DATABASE my_metadata;
USE metadata
CREATE TABLE objects ENGINE=MEMORY
SELECT data_type FROM information_schema.columns WHERE 1=2;
ALTER TABLE objects ADD COLUMN oid INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE objects ADD UNIQUE INDEX (data_type);
INSERT INTO objects (data_type)
SELECT DISTINCT data_type FROM information_schema.columns;https://dba.stackexchange.com/questions/100986
复制相似问题