存储关于列的数据的SQL

存储关于列的数据的SQL,sql,sql-server,sql-server-ce,Sql,Sql Server,Sql Server Ce,我正在学习SQLServerCompact,因为我正在编写一个需要本地数据库的程序。我有多个表,每个表都有不同的列,我想将每个列标记为特定类型(不是数据类型,只是一个整数标记),让程序知道如何处理它。我对SQL一无所知。如何做到这一点?SQL Server将此信息存储在系统表中。Sysobjects保存表信息。Syscolumns保存列信息。您可以在系统类型中找到数据类型 Sysobjects和syscolumns在id列上联接。我不记得是否要加入systypes,但快速的谷歌搜索会给你答案 我

我正在学习SQLServerCompact,因为我正在编写一个需要本地数据库的程序。我有多个表,每个表都有不同的列,我想将每个列标记为特定类型(不是数据类型,只是一个整数标记),让程序知道如何处理它。我对SQL一无所知。如何做到这一点?

SQL Server将此信息存储在系统表中。Sysobjects保存表信息。Syscolumns保存列信息。您可以在系统类型中找到数据类型


Sysobjects和syscolumns在id列上联接。我不记得是否要加入systypes,但快速的谷歌搜索会给你答案

我建议您创建用户定义的类型,并让您的代码处理您定义的类型,即

EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL'

现在,您的程序将看到类型电话,并决定做什么

我将使用扩展属性来存储元数据。例如:

EXEC sp_addextendedproperty N'columntag', N'123', 'SCHEMA', N'dbo', 'TABLE', N'mytable', 'COLUMN', N'id'

SELECT value AS columntag
FROM fn_listextendedproperty('columntag', 'SCHEMA', 'dbo', 'TABLE', 'mytable', 'column', 'id')

将“columntag”替换为任何您希望将“整型标记”称为“mytable”的内容,将“mytable”替换为表名,“id”替换为相关列名,“123”是存储以供查找的整数值。第一条语句添加扩展属性,第二条语句是如何通过编程检索扩展属性。

听起来像是并发的版本控制标记。请提供更多关于你正在做什么的信息。可能一个版本的列可以用来处理多个列…我假设您指的是它是什么类型的整数,比如它映射到哪个枚举?例如,producttype或productstatus?如果要将其映射到枚举或其他对象,我会选择此选项,因为它是一个固定的数据类型,可以正确编写脚本,也可以作为数据类型返回。使用@Dane提到的扩展属性有点过于松散耦合,需要额外查找表。