sql - (NOT) NVARCHAR 列为 NULL

标签 sql

在列上允许 NULL 值通常是为了允许表示不存在的值。使用 NVARCHAR 时,可能会出现空字符串,而无需将列设置为 NULL。在大多数情况下,我看不到带有空字符串的 NVARCHAR 与此类列的 NULL 值之间的语义差异。

将列设置为 NOT NULL 使我不必处理代码中 NULL 值的可能性,而且最好不必使用“的不同表示形式”无值”(NULL 或空字符串)。

将我的 NVARCHAR 列设置为 NOT NULL 是否会遇到任何其他问题。表现?存储大小?关于客户端代码中值的使用,我忽略了什么吗?

最佳答案

NULL 表示列中的值缺失/不适用。空白字符串是不同的,因为它是实际值。从技术上讲,NULL 没有数据类型,在本例中,空字符串是 nvarchar。

我看不出使用默认值而不是 NULL 值有任何问题。

事实上,这可能是有益的,因为您不必担心在任何查询中满足 NULL

例如

Select Sum(TotalPrice) as 'TotalPrice' From myTable Where CountOfItems > 10

容易得多

Select Sum(IsNull(TotalPrice,0)) as 'TotalPrice' From myTable Where IsNull(CountOfItems,0) > 10

您应该在 DDL 中使用默认约束,以确保数据中不会出现恶意 NULL

关于sql - (NOT) NVARCHAR 列为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3012885/

相关文章:

mysql - 确保 SQL 父类(super class)型表具有子类型

java - 根据结果​​集创建对象

sql - 根据新插入记录的主键更新记录的外键字段

php - 通过 mysql_query(...) 执行时有效的 mysql 查询返回错误

mysql - 在 where 子句中使用带有 CASE 的别名列名

php - SQL 添加到已有值

php - ctype_alnum 对抗 SQL 注入(inject)

php - SQL查询,通过给定坐标选择最近的地方

mysql - Sqlite 查询创建问题

php - SQL:显示来自数据库的最后消息