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 确实有意义。它们对于内置类型的作用是等效的。
sys.columns.user_type_id = sys.types.user_type_id
对于内置类型,它返回内置类型。
对于用户定义的类型,它返回用户定义的类型。
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/