有什么方法可以测试未分配的记录是否为空?(对不起,sqlfiddle不喜欢我的DO块。)谢谢。
DO
$$
DECLARE
r record;
BEGIN
r := null;
if r is null -- ERROR: record "r" is not assigned yet
then
end if;
END
$$;
Run Code Online (Sandbox Code Playgroud) 我有一个 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是 …
在 Snowflake 中,条件表达式x = NULL和x IS NULL条件表达式有什么区别?x IS NULL当我想找到某些列是空白的行时,这似乎是我想要的。我问,因为x = NULL被视为有效的语法,我很好奇这个表达式是否有不同的应用程序。
有人可以帮助我了解regr_slope在数据集中有行的情况下返回 NULL的情况吗?例如:
log=> select * from sb1 order by id, ts;
id | elapsed | ts
------+---------+----------------
317e | 86 | 1552861322.627
317e | 58 | 1552861324.747
317e | 52 | 1552861325.722
317e | 58 | 1552861326.647
317e | 82 | 1552861327.609
317e | 118 | 1552861328.514
317e | 58 | 1552861329.336
317e | 58 | 1552861330.317
317e | 54 | 1552861330.935
3441 | 68 | 1552861324.765
3441 | 84 | 1552861326.665
3441 | 56 | 1552861327.627
3441 …Run Code Online (Sandbox Code Playgroud) postgresql rounding aggregate-functions linear-regression sql-null
我正在尝试创建一个函数,该函数应该将表行映射到我的用户定义类型(这是复合类型)并返回结果。如果该表中的某些列为 NULL,则IS NOT NULL检查我的自定义类型不起作用!
我有一个简单的复合类型:
CREATE TYPE my_custom_type AS (
sender VARCHAR(30),
destination VARCHAR(30),
count INTEGER
);
Run Code Online (Sandbox Code Playgroud)
还有一张桌子:
CREATE TABLE messages (
id INTEGER PRIMARY KEY,
sender VARCHAR(30),
destination VARCHAR(30),
count INTEGER
);
Run Code Online (Sandbox Code Playgroud)
在此示例中插入单行:
INSERT INTO messages VALUES (1, 'sender', 'destination', 100);
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个函数,它将将该行作为自定义 Postgres 类型返回:
CREATE OR REPLACE FUNCTION my_custom_function()
RETURNS my_custom_type AS
$$
DECLARE
result my_custom_type;
BEGIN
SELECT sender, destination, count
FROM messages
LIMIT 1
INTO result;
IF result IS NULL THEN
RAISE EXCEPTION 'no data'; …Run Code Online (Sandbox Code Playgroud) SQL Server 是否有与 Ansi SQL 运算符等效的运算符:IS DISTINCT FROM/IS NOT DISTINCT FROM?
我知道我可以替换:
value1 is not distinct from value2
Run Code Online (Sandbox Code Playgroud)
和 :
(value1 = value2) or (value1 is null and value2 is null)
Run Code Online (Sandbox Code Playgroud)
或者 :
coalesce(value1, -1) = coalesce(value2, -1)
Run Code Online (Sandbox Code Playgroud)
但是这些选项会阻止引擎使用索引,那么SQL Server是否有特定的运算符来检查这种比较?
谢谢。
我有点困惑,因为我相信这个问题的答案相当简单,但我搜索并尝试了多种选择,但找不到正确的答案。
数据库是PostgreSQL 13.1
我正在使用一个 API,它将 JSON 对象发送到数据库中的存储函数,如下所示:
select * from api.car_model_create( '{
"payload": {
"manufacturer": "ai3ZV7PzbP5dNo2fb9q9QGjj2nS5aWJm",
"name": "SR22",
"variant": "G2",
"subname": null
},
"stk": "YbtmjypXMqXb1U5WOq53DxkaxrbIxl4X"
}'::json
);
Run Code Online (Sandbox Code Playgroud)
该函数查询具有以下结构的表:
CREATE TABLE app.car_models (
id INTEGER NOT NULL
, public_id CHARACTER(32) DEFAULT (api.random_string(32))
, name CHARACTER VARYING(64) NOT NULL
, variant CHARACTER VARYING(64)
, subname CHARACTER VARYING(64)
, designator CHARACTER VARYING(16)
, manufacturer INTEGER NOT NULL
, car_type INTEGER
, status INTEGER NOT NULL DEFAULT 1
) WITHOUT OIDS TABLESPACE app;
Run Code Online (Sandbox Code Playgroud)
函数内部是这样的查询: …
我在从表中获取值时遇到问题。
我需要这样的东西
A.Id a1
B.Id b1
C.Id c1
B.Id b2
C.Id c2
C.Id c3
C.Id c4
Run Code Online (Sandbox Code Playgroud)
表 A 和 B 以及表 B 和 C 连接在一起。表 A 可以包含表 B 中的一个/零个或多个值。表 C 中的值也存在同样的情况。
我需要在表 A 上对表 B 执行左联接,并在表 B 上对表 C 执行左联接。
我尝试使用表 A 和 B 中的左连接,但不知道如何在左连接内执行左连接。
那可能吗?其语法是什么样的?
编辑:数据看起来像这样
ZZN1 P1 NULL
ZZN1 P2 NAB1
ZZN2 P3 NAB2
ZZN2 P3 NAB3
Run Code Online (Sandbox Code Playgroud) 这是一个示例表 CALLRECORD:
+--------+------------+
|callid | rating |
|1 | |
|2 | 5 |
|3 | |
|4 | 1 |
|5 | |
+--------+------------+
Run Code Online (Sandbox Code Playgroud)
输出总通话数、评级通话数、平均评级和未评级通话数没有问题:
select count(*) as total from callrecord;
select count(*) as rated, avg(rating) as average_rating from callrecord where rating is not null;
select count(*) as unrated from callrecord where rating is null;
Run Code Online (Sandbox Code Playgroud)
+--------+
|total |
|5 |
+--------+
+--------+------------+
|rated |average |
|2 |3 |
+--------+------------+
+--------+
|unrated |
|3 |
+--------+
Run Code Online (Sandbox Code Playgroud)
我正在寻找如何使用单个 SQL 请求将以上所有内容输出到一行:
+--------+--------+------------+---------+ …Run Code Online (Sandbox Code Playgroud) 我们在 Postgres 中有一个案例,其中
where p.is_ready_for_submission != 'N'
未能包含 NULL 作为此条件的满意值。该列is_ready_for_submission可以是NULL, Y, N。上述语句的目的是包含NULL和Y。但 NULL 不包括在内(它们在 Oracle 中)。
实现这一目标的唯一方法是将其重写为
(p.is_ready_for_submission is null or p.is_ready_for_submission = 'Y')
Run Code Online (Sandbox Code Playgroud)
这对于 Postgres 来说是特别的吗?注意:!=和都会发生这种情况<>。
sql-null ×10
postgresql ×5
sql ×5
plpgsql ×2
sql-server ×2
where-clause ×2
average ×1
count ×1
database ×1
informix ×1
left-join ×1
python ×1
rounding ×1
snowflake-cloud-data-platform ×1
sqlite ×1