SQL Server系统名数据类型是什么?BOL说:

sysname数据类型用于

但我真的不明白.您是否可以提供一个用例?

推荐答案

sysname是一种内置数据类型,限制为128个Unicode字符,IIRC主要用于在创建脚本时存储对象名称.它的值不能是NULL

这与使用nvarchar(128) NOT NULL基本相同

EDIT

正如@Jim在 comments 中提到的,我不认为真的有商业 case 会用sysname来表示诚实.Microsoft在SQL Server中构建内部sys表和存储过程等时,主要使用它.

例如,通过执行Exec sp_help 'sys.tables',您将看到列name被定义为sysname,这是因为它的值实际上本身就是一个对象(一个表)

我不会太担心的.

还值得注意的是,对于那些仍在使用SQL Server 6.5及更低版本的人(还有人在使用它吗?)内置型sysname相当于varchar(30)

Documentation

sysname100的文档一起定义,在备注部分:

sysname是系统提供的用户定义数据类型,除了不可为空之外,它在功能上等同于nvarchar(128).sysname用于引用数据库对象名称.

为了澄清上述 comments ,default sysname被定义为NOT NULL,当然可以将其定义为可空.还需要注意的是,SQL Server实例之间的确切定义可能有所不同.

Using Special Data Types

sysname数据类型用于表列、变量和存储

有关sysname允许或不允许NULL个值的更多信息,请参见此处https://stackoverflow.com/a/52290792/300863

仅仅因为它是默认值(不为NULL),并不保证它会是!

Sql相关问答推荐

判断时间之间是否有时间

如何将资源密集型自连接转换为更快的查询?

每组显示一行(表1中的分组值),表2中的不同列表用逗号分隔

用VB.NET在Dapper中实现MS Access数据库顺序透视

SQL:如果一个表中的日期在另一个表的日期的12个月内,则为是或否

将时间范围划分为全天和前后剩余小时

通过UPDATE SELECT更新表时出现问题

使用 XML 作为 SQL 表

SQL Server 查询 WHERE LIKE

如何根据创建日期查找两个表中最接近的记录?

在 Oracle 21c 中透视文本值

避免在SQL中使用具有相同条件的多个子查询

SQL Server: 将JSON对象数组转换为表格格式

查询中获取审批者不起作用

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

PostgreSQL - 递归地聚合来自不同列的属性

Django only() 和 values() 不适用于 prefetch_related()

使用SQL中另一个表的查询结果在表中查找记录

条件意外地显着降低性能的地方

如何使用 pg-promise 创建要在复杂的 sql 查询中使用的 VALUES 列表?