可能重复:
为什么Oracle 9i将空字符串视为NULL?
我在Oracle 10g中的表命名TEMP_TABLE,只有两列- id和description只为示范的缘故.
该列id是序列生成的类型主键,NUMBER(35, 0) not null列DESCRIPTION是其类型VARCHAR2(4000) not null.
在这种情况下,基本的表结构如下所示.
+--------------+-----------+---------------+
|Name | Null? | Type |
+--------------+-----------+---------------+
|ID | NOT NULL | NUMBER(35) |
|DESCRIPTION | NOT NULL | VARCHAR2(4000)|
+--------------+-----------+---------------+
Run Code Online (Sandbox Code Playgroud)
创建此表后,我尝试INSERT交替插入以下命令.
INSERT INTO temp_table (id, description) VALUES (1, null); ->unsuccessful
INSERT INTO temp_table (id, description) VALUES (2, ''); ->unsuccessful
Run Code Online (Sandbox Code Playgroud)
它们都不成功,因为not null在DESCRIPTION列上强制执行约束.
在这两种情况下,Oracle都抱怨道
ORA-01400: cannot insert NULL …Run Code Online (Sandbox Code Playgroud) 如何在 AspNet Core 中处理空查询参数?
假设我们有一个查询
?key1=foo1&key1=foo2&key2=&key3=null
在解析它时,我希望在解析这个 URL 时有某种 Dictionary> 结果,例如:
我的问题是:我应该如何处理空查询参数?
注意:我不能简单地定义查询参数并假设不存在的查询参数为空。但我认为如果需要,应该将 null 视为显式查询参数中的有效值。
根据这个线程:How to send NULL in HTTP query string? 标准是传递编码的空值:见https://www.w3schools.com/tags/ref_urlencode.asp
所以如果我想传递一个空值,我应该这样做: ?key1=foo1&key1=foo2&key2=&key3=%00
问题是我不知道如何解码它以便将 %00 解析为空值。
我尝试了以下方法:
public Dictionary<string, List<string>> CreateFromQuery(string query)
{
if (query == null)
{
return new Dictionary<string, List<string>>();
}
var queryDictionary = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(query);
var result = queryDictionary.ToDictionary(kv => kv.Key, kv => kv.Value.ToList());
return result;
} …Run Code Online (Sandbox Code Playgroud)