标签: sql-null

MySQL,最好插入NULL还是空字符串?

我在一个有很多不同领域的网站上有一个表格.某些字段是可选字段,而某些字段是必填字段.在我的数据库中,我有一个包含所有这些值的表,是否更好的做法是将NULL值或空字符串插入到用户未放置任何数据的DB列中?

mysql sql sql-null

224
推荐指数
5
解决办法
9万
查看次数

MySQL能否自动将空字符串转换为NULL?

MySQL空字符串上有一个很好的SO而不是NULL,MySQL,最好插入NULL或空字符串?,但它没有考虑到"一致性" - 即如果你想在你的表中只有一个选择(即空字符串OR NULL),它应该是什么?

我的问题是,我可以让MySQL自动将空字符串存储为NULL吗?

在阅读了之前的SO后,我通常倾向于存储NULL,但问题是我有很多带有可选字段的PHP表单,并且(当留空时)这些返回空字符串.

php mysql forms sql-null

15
推荐指数
1
解决办法
1万
查看次数

如何在Apache Solr查询中使用OR值?

为我解决这个问题的最后一个选择是问StackOverflow.

我正在尝试创建一个Solr查询来获取在其中一个字段上具有特定值的文档或没有值的文档...

理论上,这个查询应该有效.

以下是一些信息:

查询:(姓名:约翰) - >结果数:15383 //约翰斯

查询:(名称:{*TO*}) - >结果数:61013 //具有名称的人

查询: - (名称:{*TO*}) - >结果数:216888 //没有名字的人

现在,当我在使用OR运算符的同一查询中使用第一个和第三个查询时,我希望得到(216888 + 15383)个结果.但是SOLR给出了15383个结果,只是忽略了第三个查询的效果:

查询: +((name:john)( - (name:{*TO*})))//这是我使用过的查询.

这是Solr的错误还是我在查询中做错了?合并两个查询结果是一个额外的解决方案,但如果我可以使用简单的查询,我不想做额外的代码实现.

任何帮助,将不胜感激.

solr sql-null

12
推荐指数
1
解决办法
1万
查看次数

Postgres:如果列包含 null,则将布尔列更新为 false

我有一个名为 test 的现有表,其中有两列 id 并已使用

\n\n

这里使用的包含我的表中的三个值 null、false 和 true。这里null是默认使用的

\n\n

我想更新使用 false 的行,其中使用的是 null,所以我在 Postgres 中尝试了下面的查询,但它对我不起作用。

\n\n
  update test set utilized=false where utilized=null;\n
Run Code Online (Sandbox Code Playgroud)\n

postgresql boolean sql-null

9
推荐指数
1
解决办法
3万
查看次数

如何避免 0(零)int 变成 Postgres“空”值并违反“非空”约束?

在 Go 中,我将 JSON 解组/解码为具有 int 类型 ID 字段的结构。然后,我尝试使用 go-pg 将此结构插入到 PostgreSQL 数据库中,并将 ID 列作为主键(具有非空约束)。第一个条目0的 ID 为 a。在 Postgres 文档中,它指出0可以作为主键的值。但是,我不断收到错误消息:

“错误#23502 列“number”中的空值违反了非空约束”。

当它被解组为 int 值时,它看起来就像0变成了 Go“零值”。然后将其作为值插入null到 Postgres 中。任何有关我如何避免这种情况的提示将不胜感激。

type Account struct {
   Number int `sql:"type:smallint, pk"`
   Name string
}

[...]

account := Account{}
err := json.NewDecoder(r.Body).Decode(&account)

[...]

insertErr := pgLayer.db.Insert(&account)
if insertErr != nil {
   log.Printf("Error while inserting new item")
   return "n/a", insertErr
}
Run Code Online (Sandbox Code Playgroud)

postgresql go sql-null

5
推荐指数
1
解决办法
4491
查看次数

如何使 LAG() 忽略 SQL Server 中的 NULLS?

有谁知道如何用字符串替换列中的空值,直到它遇到一个新字符串,然后该字符串替换它下面的所有空值?我有一个看起来像这样的专栏

原始列:

PAST_DUE_COL           
91 or more days pastdue        
Null
Null
61-90 days past due          
Null
Null
31-60 days past due
Null
0-30 days past due
Null       
Null
Null            
Run Code Online (Sandbox Code Playgroud)

预期结果栏:

PAST_DUE_COL           
91 or more days past due        
91 or more days past due
91 or more days past due
61-90 days past due          
61-90 days past due 
61-90 days past due 
31-60 days past due
31-60 days past due
0-30 days past due
0-30 days past due      
0-30 days past due …
Run Code Online (Sandbox Code Playgroud)

sql sql-server window-functions gaps-and-islands sql-null

5
推荐指数
1
解决办法
3295
查看次数

MySQL 中 union/union all 中如何处理空值?

基于以下声明

select null
union
select null
Run Code Online (Sandbox Code Playgroud)

上述语句的输出是:

null
Run Code Online (Sandbox Code Playgroud)

虽然这个声明:

select null
union all
select null
Run Code Online (Sandbox Code Playgroud)

输出:

null
null
Run Code Online (Sandbox Code Playgroud)

那么null <> null这里如何处理 null 值以及在哪种数据类型中考虑它?

mysql sql union sql-null

3
推荐指数
1
解决办法
2万
查看次数

比较 SQLite 查询中两个可能为 NULL 的值

我有一个 SQLite 查询,如:

SELECT max(e), url, branch FROM (SELECT max(T1.entry) e, T1.url, T1.branch FROM repo_history T1
                                                        WHERE (SELECT active FROM repos T2 WHERE url = T1.url AND branch = T1.branch AND project = ?1)
                                                        GROUP BY T1.url, T1.branch
                                                        UNION
                                                        SELECT null, T3.url, T3.branch FROM repos T3 WHERE active AND project = ?1 )
                               GROUP BY url ORDER BY e
Run Code Online (Sandbox Code Playgroud)

请注意,该?1参数出现了两次。无论如何,在某些情况下,它可以为空(None在 python 中,据我所知,NULL在 SQLite 中变成了)。这是一个问题,因为我不了解 null 处理,但基本上我没有得到任何回报。

那么,我如何处理where "project" = ?1什么时候?1是 …

python sqlite sql-null

3
推荐指数
1
解决办法
1364
查看次数

SELECT MAX(...) 在存储过程中错误地返回 NULL

我有一个表,其中ga_sum_1有一列。created_timestamp当我从 mysql 命令行执行以下查询时:

mysql> select max(created_timestamp) from ga_sum_1;
+------------------------+
| max(created_timestamp) |
+------------------------+
| 2017-11-05 00:59:55    |
+------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

如果我从一个非常简单的存储过程中执行相同的操作:

delimiter //
create procedure test()
begin
  select max(created_timestamp) from ga_sum_1;
end//
delimiter ;

mysql> call test();
+------------------------+
| max(created_timestamp) |
+------------------------+
| 2017-11-05 00:59:55    |
+------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

但是,当我在存储过程中进行同样的操作时:

drop procedure if exists test;

delimiter //

create procedure test()
begin
  declare cursor_end condition for sqlstate '02000';
  declare …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-null

3
推荐指数
1
解决办法
365
查看次数

SQL Hive - 将空值替换为 0 (Hadoop Hive)

进行左连接后,我留下了许多空值。如何仅在同一查询中的某些列中将这些空值替换为 0?

select 
    m1.*, t2.Apple, t3.Berry, t4.Cherry
from
    table1 as t1
    left join table2 as t2 on t1.id = t2.id
    left join table3 as t3 on t1.id = t3.id
    left join table3 as t4 on t1.id = t4.id
;
Run Code Online (Sandbox Code Playgroud)

示例输出

ID  Apple     Berry    Cheery
1   1         NULL     1
2   1         NULL     NULL
3   NULL      1        NULL
4   NULL      NULL     NULL
Run Code Online (Sandbox Code Playgroud)

sql hadoop hive left-join sql-null

3
推荐指数
1
解决办法
7346
查看次数