Questions tagged «null»

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


2
为什么在视图中将NOT NULL计算列视为可为空?
我有一张桌子: CREATE TABLE [dbo].[Realty]( [Id] [int] IDENTITY(1,1) NOT NULL, [RankingBonus] [int] NOT NULL, [Ranking] AS ([Id]+[RankingBonus]) PERSISTED NOT NULL .... ) 和一个视图: CREATE View [dbo].[FilteredRealty] AS SELECT realty.Id as realtyId, ... COALESCE(realty.Wgs84X, ruian_cobce.Wgs84X, ruian_obec.Wgs84X) as Wgs84X, COALESCE(realty.Wgs84Y, ruian_cobce.Wgs84Y, ruian_obec.Wgs84Y) as Wgs84Y, realty.Ranking, ... FROM realty JOIN Category ON realty.CategoryId = …

4
即使零行匹配,也让SELECT返回恒定值
考虑以下选择语句: SELECT *, 1 AS query_id FROM players WHERE username='foobar'; 它返回query_id带有值的列1以及玩家的其他列。 如何将一个至少让上面的SQL回报query_id的1,即使选择,反而找不到行那场比赛? 顺便说一句,它是PostgreSQL 8.4。


4
如何在CONCAT MySQL中排除NULL值?
如果我有这个-tadd是Address表: CONCAT(tadd.street_number, ' ', tadd.street_name,', ', tadd.apt_number,', ', tadd.city,', ', tadd.postal_code,', ', tadd.country) AS 'Address' 如果apt_number不存在,是否可以排除它? 我在想: WHERE tadd.apt_number IS NOT NULL 但是它将只返回带有的行apt_number,即使某些方法有效,我该如何处理该多余的逗号。 如果重复,请在评论中发布链接。
14 mysql  null  concat 

1
如何使用“ WHERE字段为NULL”索引查询?
我的桌子上有很多插入物,将(uploaded_at)字段之一设置为NULL。然后,定期任务选择所有元组WHERE uploaded_at IS NULL,对其进行处理并更新,将其设置uploaded_at为当前日期。 我应该如何索引表? 我了解我应该使用部分索引,例如: CREATE INDEX foo ON table (uploaded_at) WHERE uploaded_at IS NULL 或类似的东西。我有点困惑,但是如果对一个始终为的字段进行索引是正确的话NULL。或者使用b树索引是否正确。哈希看起来是个更好的主意,但是它已经过时了,不能通过流热备份复制来复制。任何建议将不胜感激。 我已经尝试了以下索引: "foo_part" btree (uploaded_at) WHERE uploaded_at IS NULL "foo_part_id" btree (id) WHERE uploaded_at IS NULL 并且查询计划程序似乎总是选择foo_part索引。explain analyse也会为foo_part索引产生更好的结果: Index Scan using foo_part on t1 (cost=0.28..297.25 rows=4433 width=16) (actual time=0.025..3.649 rows=4351 loops=1) Index Cond: (uploaded_at …

2
PostgreSQL UPSERT问题与NULL值
我在使用Postgres 9.5中的新UPSERT功能时遇到问题 我有一个表,用于汇总来自另一个表的数据。复合键由20列组成,其中10列可以为空。下面,我为我遇到的问题创建了一个较小的版本,尤其是NULL值。 CREATE TABLE public.test_upsert ( upsert_id serial, name character varying(32) NOT NULL, status integer NOT NULL, test_field text, identifier character varying(255), count integer, CONSTRAINT upsert_id_pkey PRIMARY KEY (upsert_id), CONSTRAINT test_upsert_name_status_test_field_key UNIQUE (name, status, test_field) ); 根据需要运行此查询(首先插入,然后随后的插入仅增加计数): INSERT INTO test_upsert as tu(name,status,test_field,identifier, count) VALUES ('shaun',1,'test value','ident', 1) ON CONFLICT …

6
为什么不能在联接中使用空值?
我已经通过使用...解决了查询问题,row_number() over (partition by这是一个更笼统的问题,为什么我们不能在联接中使用具有空值的列。为什么不能为了联接而将null等于null?
13 oracle  join  null 

3
可以将DISTINCT FROM与ANY或ALL结合吗?
是结合一个Postgres的方式IS DISTINCT FROM与ANY或得到同样结果的其他一些巧妙的方法? select count(*) from (select 'A' foo union all select 'Z' union all select null) z where foo <> any(array[null, 'A']); count ------- 1 (1 row) select count(*) from (select 'A' foo union all select 'Z' union all select null) z where foo is distinct from any(array[null, 'A']); …


3
将大表上的更改列速度提高到NON NULL
我最近在一个表中添加了一个可为NULL的位列,该表具有近5亿行。列上没有默认值,但是所有插入都将值指定为0或1,并且我运行了一次例程,将0或1分配给所有现有行(小批量更新行)。现在,每一行在该列中应具有0或1。 我想使bit列不可为空,但是当我尝试通过via进行操作时ALTER TABLE t1 ALTER COLUMN c1 bit not null,它开始运行了3分钟,并且我停止了它,因为它阻止了对表的所有读取,并且我怀疑它将花费很长时间才能完成。可能不会花费太长时间,但是我不能冒太多不可用的风险。回滚本身花费了6分钟。 您对我如何使该列不可为空而不可能花费数小时才能完成有什么建议? 另外,有什么方法可以估算ALTER TABLE ALTER COLUMN我开始然后取消的语句需要多长时间? 我正在使用SQL Server 2017 Web Edition。

4
为何在Oracle中不使用可为空的数字?
我们的公司正在与另一个软件公司进行联合项目,有人告诉我们,如果不应显示特定值,则应传递-5000(它们的任意哨兵值);原因是在Oracle数据库(现在是以前的Oracle开发人员)的建议下,Oracle数据库中没有number列支持空值。该公司还用VB6编写了他们的绝大多数代码(慢慢地过渡到VB.NET,这是另一天的话题...)。出于纯粹的好奇心,此建议是否有任何正当理由?我想不起我这边。 -编辑 感谢您的反馈。我在CodeProject.com(链接)上提出了相同的问题,并收到了非常相似的反馈。似乎唯一可以证明这种做法正确的时间与外键有关,我可以说它们在系统中的任何地方都不使用外键。做出此决定的开发人员(我曾经在该公司工作)比我拥有更多的经验,因此我想确保在发生嘲笑之前没有正当的理由。

3
有没有办法对WHERE子句中的变量进行空检查仅发生一次?
我对一个看起来像这样的大表进行查询: declare @myIdParam int = 1 select * from myTable where (@myIdParam is null or myTable.Id = @myIdParam) 在where子句中有几个类似的条件,并且也有很多联接,但这是一个摘要。 实际上,如果@myIdParam为null,则我们不想使用此参数来限制结果。 我不是数据库专家,但是从我的测试看来,此NULL检查是针对每条记录执行的,并且没有以任何方式进行优化。 如果我删除了空检查并假定参数不为空,则查询将立即返回。否则,最多需要十秒钟。 有没有一种方法可以对此进行优化,以便在运行时仅进行一次检查?
12 sql-server  null 

2
快速将NULL列更改为NOT NULL
我有一个包含数百万行的表和一个允许NULL值的列。但是,当前没有任何行具有该列的NULL值(我可以通过查询很快地验证这一点)。但是当我执行命令时 ALTER TABLE MyTable ALTER COLUMN MyColumn BIGINT NOT NULL; 相对而言,查询将永远花费。实际上,它需要10到20分钟,是添加检查约束的两倍多。有没有一种方法可以立即更新该列的表元数据,特别是因为我知道该列没有行具有NULL值?

3
在PostgreSQL中为不能为null的字段不指定NOT NULL有什么后果?
我有一个应用程序(数据存储在PostgreSQL中),其中表中的大多数字段始终不为null,但是这些表的架构并未强制执行此操作。例如看这个假表: CREATE TABLE "tbl" ( "id" serial, "name" varchar(40), "num" int, "time" timestamp PRIMARY KEY ("id"), UNIQUE ("id") ); 此外name,num,time没有明确提及的NOT NULL,在现实中是这样,因为执行发生在应用端。 我的感觉是应该对其进行更改,但相反的是,应用程序级别确保此处不会出现空值,并且没有其他人手动修改该表。 我的问题是:通过设置显式NOT NULL约束? 我们拥有一个良好的代码审查流程和一个相当不错的文档,因此,某些新人提交的东西可能会破坏此约束,这实际上不足以证明更改是正确的。 这不是我的决定,所以这正是我在寻找其他理由的原因。我认为,如果某些内容不能为null,并且数据库允许您指定某些内容不为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.