sql-server - 在sql server中,sys.types中的user_type_id和system_type_id有什么区别

标签 sql-server sqldatatypes

sql server中sys.types View 中的user_type_id和system_type_id有什么区别?

我想通过sys.columns和sys.types内连接来获取用户表中列的数据类型,但这两个 View 都有两个字段user_type_id和system_type_id,应该使用哪一个?

最佳答案

您几乎永远不想加入sys.columns.system_type_id = sys.types.system_type_id。这将导致 duplicate records对于用户定义类型。

有两个 JOIN 确实有意义。它们对于内置类型的作用是等效的。

  1. sys.columns.user_type_id = sys.types.user_type_id

    对于内置类型,它返回内置类型。

    对于用户定义的类型,它返回用户定义的类型。

  2. sys.columns.system_type_id = sys.types.user_type_id

    对于内置类型,它返回内置类型。

    对于用户定义的类型,它返回内置基类型。例如,如果您想要获取所有 varchar 列,包括所有基于 varchar 的用户定义列,这可能是有意义的。

关于sql-server - 在sql server中,sys.types中的user_type_id和system_type_id有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20348522/

相关文章:

sql-server - 带有 varchar(255) PRIMARY KEY 的表会造成什么伤害吗?

sql-server - 全文搜索不适用于 SQL Azure 上的 XML 列

sql-server - CROSS APPLY 与 GROUP BY 一起返回逗号分隔值

python - 使用 SQLALCHEMY 设置 Oracle VARCHAR2 长度 i 字节

mysql - 如何在sql中让int>255

sql-server - SQL Server 查询结果末尾有空格

c# - 用户在 SqlCommand 中指定的存储过程名称

sql - MS SQL 如何从表中选择 n 行,即使表有 n - x 行

c# - 我可以强制 SQL SMO 使用 READ UNCOMMITTED 隔离吗?

mysql - 如何正确地将纬度和经度坐标插入 mySQL float?