Questions tagged «null»

数据库概念,用于表示丢失,未知或不适用的数据。

3
两个可为空的列,其中一个必须具有值
不解释问题: 无论如何,是否有2个空值的约束总是需要1个有值?例如,两个日期列都为空,但至少有 1个需要具有一个值 问题描述: 假设我有一个名为Expense的表格 并有两个日期: prevision_expense_expiration_date DATE为空ABLEABLE_payment_date DATE为空 这两列的逻辑如下: 我买了东西,我知道我得为此花些钱,例如电话费。我将其作为费用输入,并带有expense_payment_date。该日期是我应该支付的假定日期,而不是实际的支付日期,例如发票的到期日期。 在其他情况下,我会出售某些提供者提供的服务的礼品卡。我可能有买我的提供商的服务转移到我的客户的费用只有当客户赎回卡。因此,礼品卡有一个有效期,我想对该“费用”做一个预先准备,而不插入礼品卡有效期内的费用,如果礼品卡过期,则“费用”不应输入到帐户中系统。 我知道我可以有2个相等的表,分别称为prevision_expense和Confirmed_expense,但是听起来不对,所以我在同一张表中有2个日期,可以为空,但是我想约束一下,以便始终需要一个。 还有另一种可行的策略: payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL 因此,在这种情况下,如果日期为prevision,则bool值将为1,否则将为0。没有空值,一切都很好。除了我希望可以选择在第一次有预先设定日期时存储两个值,然后(然后说两天后说)确定该费用的日期时,在这种情况下,采用策略2时,我将没有该选项。 我在数据库设计中做错了什么吗?:D

1
为什么需要将NULL强制转换为列类型?
我有一个帮助程序,它为我生成一些代码以进行批量更新并生成如下所示的SQL: (活动字段和核心字段均为类型boolean) UPDATE fields as t set "active" = new_values."active","core" = new_values."core" FROM (values (true,NULL,3419), (false,NULL,3420) ) as new_values("active","core","id") WHERE new_values.id = t.id; 但是,它失败了: ERROR: column "core" is of type boolean but expression is of type text 我可以通过添加::booleannull 来使其正常工作,但这似乎很奇怪,为什么将NULL视为类型TEXT? 同样,转换起来有点棘手,因为它需要大量的代码重做才能知道它应该将NULL转换为哪种类型(列和值的列表当前是从一个简单的JSON对象数组自动生成的) 。 为什么这是必需的,并且有一个更优雅的解决方案,不需要生成的代码知道NULL的类型? 如果相关,我正在使用Node.JS上的续集来执行此操作,但在Postgres命令行客户端中也得到了相同的结果。
10 postgresql  null  cast 

3
计算列中的空值和非空值
如何在MySQL的同一列上计算和检索null和not null? mytable --------------------------------------------------- id | name | visited | registDate | --------------------------------------------------- 1 | george | NULL | 2014-04-01 | --------------------------------------------------- 2 | Thomas | NULL | 2014-04-15 | --------------------------------------------------- 3 | Wilfred | 1 | 2014-04-24 | --------------------------------------------------- 4 | paul | 1 | 2014-04-10 | --------------------------------------------------- 5 …
10 mysql  count  null 

1
添加SPARSE使表更大
我有一个通用的日志表,大约有500万行。 有一个“强类型”字段存储事件类型,还有一堆“弱类型”列包含与事件相关的数据。也就是说,那些“错误输入”列的含义取决于事件的类型。 这些列定义为: USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …

2
如何帮助SQL Server识别我的索引视图列不可为空?
我在SQL Server 2008中定义了以下索引视图(您可以从gist下载工作架构以进行测试): CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id,currency_id和transaction_amount都定义为中的NOT NULL列dbo.transactions。但是,当我看着Management Studio中的对象资源管理器,它标志着这两个视图定义balance_amount,并transaction_count为NULL在视图-able列。 我看了几个讨论,其中最相关的讨论表明一些功能改组可以帮助SQL Server识别视图列始终为NOT NULL。不过,在我的情况下,这样的改组是不可能的,因为在索引视图中不允许使用聚合函数的表达式(例如ISNULL()over SUM())。 …

2
如何检查空值或空表值参数?
我有一个存储过程(SS2k8),带有几个表值参数,有时会为null或为空。我看过这个StackOverflow帖子,其中指出应该从调用参数列表中省略空/空TVP。我的问题是我无法弄清楚如何在存储过程中检查空或空,因为“ IF(@tvp IS NULL)”在创建过程时失败,并显示消息“必须声明标量变量” @tvp”。我是否必须在TVP上执行SELECT COUNT(*)并检查零? 代码摘录: CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS IF (@tvp IS NOT NULL) -- doesn't work BEGIN -- lots of expensive processing END ELSE BEGIN -- a little bit of cheap processing END ...

1
SQL Server无法将NULL存储在固定长度的列中吗?
我在Oracle官方文档中遇到了以下声明: 在Microsoft SQL Server中,只有具有可变长度数据类型的列才能存储NULL值。创建允许固定长度数据类型为NULL的列时,该列将自动转换为系统可变长度数据类型... 我从未在SQL Server文档中阅读过此书,也从未经历过这样的事情。相反:在SQL Server中,固定长度的数据类型(例如int和float,还包括char)被大量使用,并且即使可以为NULL时也非常有效地存储。 这个Oracle声明背后有什么根据吗?

1
MySQL在数字列中加载NULL
MySQL 5.6.23,InnoDB 我正在使用LOAD DATA INFILEcommnd 从字符分隔的文本文件中加载表,我希望每个带有a的字段(在此设置中\N为NULL字符)都将a放置NULL在表中。一些数字类型具有此行为,而另一些数字类型则放置0。我正在使用FIELDS TERMINATED BY,某些列确实可以正确获取NULL值,因此它不是固定行格式的问题。 这些是我在测试时观察到的类型: INT插入NULLs DECIMAL(x,0)插入NULLs DECIMAL(x,y)插入0.0s FLOAT插入0s DOUBLE(x,y)插入0.0s DOUBLE插入0s 所有有问题的列都用定义DEFAULT NULL。我知道各种函数都可以将这些0s转换为NULLs。问题是是否存在可以处理小数精度并且也将NULL在加载时插入s 的数据类型。 此外,我看到了一大堆与误解字符串,空字符串和null值有关的问题。(示例 示例 示例)这不是问题,因为NULLs存在,并且在我将其重新定义为DECIMAL(x,0)时正确地装入了同一列,然后在定义为DECIMAL(x,3)时不正确。

1
用NOT NULL定义的MySQL列允许为空
我不久前创建了一个表,并开始向其中添加数据。最近,我在其中添加了新列(address),并将其NOT NULL作为新列的一部分。旧行(预添加)仍然为空,这在定义中创建了一条警告。但是,仍允许带有新列的新行插入空值。 新列的预添加内容是否为空?如果是这样,有没有办法告诉MySQL即使以前不允许它呢? mysql> show create table my_table\G *************************** 1. row *************************** Table: my_table Create Table: CREATE TABLE `my_table` ( `entry_id` int(11) NOT NULL auto_increment, `address` varchar(512) NOT NULL, `follow_up_to` int(11) default NULL, PRIMARY KEY (`entry_id`), KEY `follow_up_to` (`follow_up_to`), CONSTRAINT `my_table_ibfk_1` FOREIGN KEY (`follow_up_to`) REFERENCES `my_table` (`entry_id`) ON UPDATE CASCADE …
8 mysql  null 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.