AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[null](dba)

Martin Hope
jo-so
Asked: 2022-03-26 23:45:38 +0800 CST

NULL 和空文本的区别

  • 2

我正在使用 Postgres。val text NULL CHECK(val <> '')使用(or varchar) 和之间的存储或性能是否有任何显着差异val text NOT NULL?文本不能为空。因此,空文本可以作为未设置的标记。但是,例如根据存储有什么不同吗?

我知道,我用空文本失去了 NULL 魔法,但这没关系。另一方面,我可以更轻松地导入应用程序,因为我不必处理NULL. 它只是串入,串出。

postgresql null
  • 1 个回答
  • 771 Views
Martin Hope
Déjà vu
Asked: 2022-01-06 20:23:03 +0800 CST

MySQL 8.0 时间戳 CURRENT_TIMESTAMP 将日期设置为“0000-00-00 00:00:00”(在 5.7 中可以)

  • 0

表 T 有这个字段

+---------------+--------------+------+-----+-------------------+-----------------------------+
| Field         | Type         | Null | Key | Default           | Extra                       |
+---------------+--------------+------+-----+-------------------+-----------------------------+
| updated       | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------------+--------------+------+-----+-------------------+-----------------------------+

在 MySQL 5.7 中,更新记录和设置updated=null会自动设置updated为当前日期时间

UPDATE T SET ...,updated=null WHERE k=123

==> 

+---------------------+
| updated             |
+---------------------+
| 2022-01-05 22:52:05 |
+---------------------+

但是在 MySQL 8.0 中做同样的事情,给出

+---------------------+
| updated             |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+

我该如何解决这个问题,这是 MySQL 错误,还是新设置(或行为改变)?

null mysql-8.0
  • 1 个回答
  • 1123 Views
Martin Hope
Antsamotady
Asked: 2020-11-12 22:11:51 +0800 CST

创建表时如何在MySQL中一次将所有行的默认值设置为空字符串

  • 0

在 MySQL 中,在创建表时,我希望将空字符串''作为所有需要列的值,而不是'NULL'.

是否有可能,是否安全,我该如何立即做到这一点?

我有以下版本:

mysql  Ver 15.1 Distrib 10.1.45-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
mysql null
  • 1 个回答
  • 12002 Views
Martin Hope
Dimitrios Desyllas
Asked: 2020-07-03 05:46:13 +0800 CST

为什么我的 SELECT 查询不返回空值?[复制]

  • 1
这个问题在这里已经有了答案:
为什么 NOT IN 与包含 NULL 的集合总是返回 FALSE/NULL? (1 个回答)
2年前关闭。

我有以下 SQL 脚本:

CREATE temporary table if not EXISTS the_values (
 key SERIAL,
 value INTEGER NULL 
);

insert into the_values(value) values (null),(1),(null),(2),(3),(4),(5),(6),(10),(null),(null);

select * 
from the_values 
where value not in (1,2,3,4,5,6,10); 

我注意到查询:

select * 
from the_values 
where value not in (1,2,3,4,5,6,10); 

不返回具有valueNULL 的行,这引起了我的注意。因此,我想知道为什么会这样。我对这种现象的技术方面更感兴趣,而不是明显的解决方案:

select * 
from the_values 
where value not in (1,2,3,4,5,6,10) 
   or value IS NULL; 
postgresql null
  • 2 个回答
  • 4524 Views
Martin Hope
Elias
Asked: 2020-04-23 11:21:09 +0800 CST

设置为 Not Null 的字段是否也应具有拒绝空字符串的约束?

  • 1

我期望值的任何字段(如 orderNumber 或 customerNumber)我将设置为不可为空。

如果我期望该字段的值不为空,我是否也应该始终有一个不允许零长度字符串或仅空格字符串的约束?

sql-server null
  • 2 个回答
  • 147 Views
Martin Hope
user196572
Asked: 2019-12-07 01:54:13 +0800 CST

Where 子句中的空值检查条件

  • 1
DECLARE @SubDesc1 nvarchar(100)   
SET @SubDesc1 = null

我想做这样的事情。

查询 1

SELECT * 
From Table1   
where Category = 'Category1'   
  AND [Description] ='ABC'   
  AND SubDescription1 IS NULL   
   OR SubDescription1 = @SubDesc1

查询 2

SELECT * 
FROM Table1   
WHERE Category = 'Category1'   
  AND [Description] ='ABC'  
  AND SubDescription1 = (Case WHEN @SubDesc1 IS NOT NULL 
                              Then @SubDesc1
                              ELSE SubDescription1 
                              END)

如果我的,他们都没有解决@SubDesc1 = 'def'

但是,它会让我记录在哪里SubDescription1 Is null和SubDescription1 = 'def'

我怎样才能做到这一点?

sql-server null
  • 1 个回答
  • 44 Views
Martin Hope
thames
Asked: 2019-10-13 16:04:24 +0800 CST

如何过滤触发器中值不为空的 hstore?

  • 1

解释问题的最简单方法是使用审计触发器。

但是,在插入时它会保存所有值,包括空值。我想过滤掉hstore(NEW.*). 最简单/最快的方法是什么?

来源:https ://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql#L134

audit_row.row_data = hstore(NEW.*) - excluded_cols;

这显然不起作用,但希望能解释答案的样子。

audit_row.row_data = hstore(hstore(NEW.*) FILTER (WHERE value IS NOT NULL)) - excluded_cols;

首选将回答不使用用户创建的函数,例如仅使用 Postgres 函数/运算符。

这适用于 >= PostgreSQL 11。

我正在寻找一个解决方案hstore,而不是json或jsonb。json具有或jsonb可以包括的替代方式,但是hstore是优选的。

postgresql null
  • 2 个回答
  • 764 Views
Martin Hope
oorst
Asked: 2019-10-08 14:21:36 +0800 CST

NULL 行和 IS NULL

  • 2

我一直在写一些看起来像这样的查询:

SELECT
  ...
FROM table_a a
LEFT JOIN table_b b
  ON b.id = a.id
LEFT JOIN table_c c
  ON c.id = a.id

在这些查询中,只有一个连接可以成功。换句话说,来自的行与来自的行或来自的table_a行匹配。table_btable_c

在选择列表中,有一些基于连接成功的逻辑。我可以通过执行以下操作来测试它:

SELECT
  CASE
    WHEN b IS NULL THEN
      -- do something
    ELSE NULL
  END
FROM table_a a
LEFT JOIN table_b b
  ON b.id = a.id
LEFT JOIN table_c c
  ON c.id = a.id

测试某行是否可用时,NULL您可以在表达式中使用表别名IS NULL,但它在表达式中无法按预期工作IS NOT NULL。table_b如果其中有不存在的列NULL,则表达式table_b IS NOT NULL将返回FALSE。

但是,表达式将按预期NOT (table_b IS NULL)返回。TRUE

为什么会这样?

postgresql null
  • 2 个回答
  • 54 Views
Martin Hope
liorko
Asked: 2019-06-05 08:29:32 +0800 CST

MySQL 8.0 无法将 NULL 值插入日期字段

  • 1

我正在尝试使用 InnoDB 引擎将数据从文件插入到 MYSQL 8.0。

我正在使用这个查询:

LOAD DATA INFILE '/var/lib/mysql-files/item_new_1_4.dat'
INTO TABLE Item FIELDS TERMINATED BY '|';

我收到一条错误消息:

ERROR 1292 (22007) at line 1: Incorrect date value: 'NULL' for column 'i_rec_end_date' at row 1

该表是由该查询创建的:

CREATE TABLE IF NOT EXISTS Item(
    i_item_sk integer ,
    i_item_id char(16) NOT NULL,
    i_rec_start_date date,
    i_rec_end_date date,
    i_item_desc varchar(200),
    i_current_price decimal(7,2),
    i_wholesale_cost decimal (7,2),
    i_brand_id integer,
    i_brand char(50),
    i_class_id integer default ,
    i_class char(50),
    i_category_id integer,
    i_category char(50),
    i_manufact_id integer,
    i_manufact char(50),
    i_size char(20),
    i_formulation char(20),
    i_color char(20),
    i_units char(10),
    i_container char(10),
    i_manager_id integer,
    i_product_name char(50),
    PRIMARY KEY (i_item_sk)
);

第1行的数据是:

1|AAAAAAAABAAAAAAA|1997-10-27|NULL|Powers will not get influences. Electoral ports should show low, annual chains. Now young visitors may pose now however final pages. Bitterly right children suit increasing, leading el|27.02|23.23|5003002|exportischolar #2|3|pop|5|Music|52|ableanti|N/A|3663peru009490160959|spring|Tsp|Unknown|6|ought|
mysql null
  • 2 个回答
  • 5779 Views
Martin Hope
Erwin Brandstetter
Asked: 2019-03-30 07:26:20 +0800 CST

文本和 NULL 值的连接如何返回非空结果?

  • 2

断言 1

连接运算符||可以连接任何字符串类型的值,返回text. 在 Postgres 中,每种类型都有一个文本表示,并且可以转换为text. 因此,引用手册:

但是,字符串连接运算符 ( ||) 仍然接受非字符串输入,只要至少一个输入是字符串类型

有关的:

  • 如何连接 Postgres SELECT 中的列?

断言 2

连接一个或多个NULL值会产生结果NULL。

test=# SELECT (text 'foo' || NULL) IS NULL
test-#      , (text 'bar' || char '1' || NULL ) IS NULL
test-#      , (NULL::bigint || text 'baz') IS NULL;
 ?column? | ?column? | ?column? 
----------+----------+----------
 t        | t        | t

问题

是否可以连接 atext和一个NULL值并获得非空结果?

换句话说,这怎么可能?

test=# SELECT col IS NULL AS col_is_null
test-#     , (text 'foo' || col) IS NULL AS result_is_null
test-# FROM   tbl;
 col_is_null | result_is_null 
-------------+----------------
 t           | f

适用于任何 Postgres 版本。
我的一个客户偶然发现了这个,依靠结果是NULL,我发现它很有趣,可以分享。
这是一个有点技巧的问题,因为我知道答案。

注意: CASE或COALESCE捕捉NULL值通常是好的风格,但这不是这个问题的目的。这是关于与实际NULL值的连接,使用连接运算符||并且仍然得到非空结果。

postgresql null
  • 2 个回答
  • 2770 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve