我在一个有很多不同领域的网站上有一个表格.某些字段是可选字段,而某些字段是必填字段.在我的数据库中,我有一个包含所有这些值的表,是否更好的做法是将NULL值或空字符串插入到用户未放置任何数据的DB列中?
MySQL空字符串上有一个很好的SO而不是NULL,MySQL,最好插入NULL或空字符串?,但它没有考虑到"一致性" - 即如果你想在你的表中只有一个选择(即空字符串OR NULL),它应该是什么?
我的问题是,我可以让MySQL自动将空字符串存储为NULL吗?
在阅读了之前的SO后,我通常倾向于存储NULL,但问题是我有很多带有可选字段的PHP表单,并且(当留空时)这些返回空字符串.
为我解决这个问题的最后一个选择是问StackOverflow.
我正在尝试创建一个Solr查询来获取在其中一个字段上具有特定值的文档或没有值的文档...
理论上,这个查询应该有效.
以下是一些信息:
查询:(姓名:约翰) - >结果数:15383 //约翰斯
查询:(名称:{*TO*}) - >结果数:61013 //具有名称的人
查询: - (名称:{*TO*}) - >结果数:216888 //没有名字的人
现在,当我在使用OR运算符的同一查询中使用第一个和第三个查询时,我希望得到(216888 + 15383)个结果.但是SOLR给出了15383个结果,只是忽略了第三个查询的效果:
查询: +((name:john)( - (name:{*TO*})))//这是我使用过的查询.
这是Solr的错误还是我在查询中做错了?合并两个查询结果是一个额外的解决方案,但如果我可以使用简单的查询,我不想做额外的代码实现.
任何帮助,将不胜感激.
我有一个名为 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 在 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) 有谁知道如何用字符串替换列中的空值,直到它遇到一个新字符串,然后该字符串替换它下面的所有空值?我有一个看起来像这样的专栏
原始列:
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) 基于以下声明
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 值以及在哪种数据类型中考虑它?
我有一个 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
是 …
我有一个表,其中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) 进行左连接后,我留下了许多空值。如何仅在同一查询中的某些列中将这些空值替换为 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)