搜索

pdf文档 Firebird Null Guide Russian

288.08 KB 15 页 0 下载 128 浏览 0 评论 0 收藏
所属分类: 数据库 / Firebird
语言 格式 评分
俄语
.pdf
3
摘要
Документ посвящен поведению NULL в СУБД Firebird. NULL в SQL представляет состояние неизвестности или отсутствия значения и не может быть использован как寻常ное значение. В агрегатных функциях, таких как COUNT, SUM, AVG, MAX и MIN, NULL игнорируется при вычислении результата, кроме COUNT(*), который возвращает количество всех записей. В булевых выражениях NULL ведет себя особенным образом: например, NULL OR false = NULL, а NULL AND true = NULL. Универсальные пользовательские функции (UDF) могут不慎 преобразовывать NULL в обычные значения и наоборот, что требует дополнительной проверки. Для защиты выражений от NULL предлагается использовать проверку на NULL и агрегатные функции, такие как COALESCE и NVL.
AI总结
### 《Firebird Null Guide Russian》 总结 #### 1. **引言** - Firebird 数据库中,用户常遇到与 `NULL` 相关的问题。 - `NULL` 不是具体值,而是表示“未知”或“不存在”的状态,容易引起误解。 - 本文探讨 `NULL` 的行为,分析常见错误,并提供避免方法。 #### 2. **NULL 的定义** - `NULL` 不是值,而是表示字段值未知或不存在。 - `NULL` 不等于 `0`、空字符串或其他值。 - 核心定义:`NULL` 表示“未知”。 #### 3. **NULL 在表达式中的行为** - `NULL` 具有传染性:在算术、字符串或日期表达式中使用 `NULL`,结果通常为 `NULL`。 - 在布尔表达式中,结果取决于操作类型和涉及的值。 - 注意:Firebird 2.0 及以上版本支持直接使用 `NULL` 常量,但早期版本不支持。 #### 4. **NULL 在聚合函数中的处理** - 聚合函数(如 `COUNT`、`SUM`、`AVG`、`MAX`、`MIN`)通常忽略 `NULL` 值。 - `COUNT(*)` 返回所有记录数,包括 `NULL` 值。 - `COUNT(字段)` 只计算非 `NULL` 值。 - 其他聚合函数在无数据时返回 `NULL`。 - `SUM` 和 `AVG` 在无数据时返回 `NULL`,这与常规逻辑不符。 #### 5. **NULL 在 UDF(用户定义函数)中的处理** - UDF 是外部模块中的函数,需先声明后使用。 - 由于调用方式的限制,UDF 可能会意外转换 `NULL`: - `NULL` 可能被转换为 `0` 或空字符串。 - 正常值可能被错误地转换为 `NULL`。 - 建议: - 检查 UDF 的声明方式(`by descriptor` 更安全)。 - 查看函数代码,确认其对 `NULL` 的处理。 - 使用 `COALESCE` 或 `NVL` 函数进行处理。 #### 6. **逻辑运算与比较运算** - 在布尔逻辑中: - `NULL OR false` = `NULL` - `NULL OR true` = `true` - `NULL AND false` = `false` - `NULL AND true` = `NULL` - 在比较运算中: - `A = A` 如果 `A` 为 `NULL`,结果为 `NULL`。 - `0 * NULL`、`NULL >= ''`、`'' <= NULL` 等表达式返回 `NULL`。 #### 7. **结论** - `NULL` 表示未知,需谨慎处理。 - 聚合函数中,`COUNT(*)` 计算所有记录,其他函数忽略 `NULL`。 - 使用 `IS NULL` 进行检查,避免直接使用 `=` 或 `<>`。 - `COALESCE`(1.5 版本)和 `NVL`(1.0 版本)可用于将 `NULL` 转换为具体值。 - 注意 UDF 可能导致的意外转换。 #### 8. **附录** - **附录 A**:文档历史记录。 - **附录 B**:许可协议(Public Documentation License Version 1.0)。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 8 页请下载阅读 -
文档评分
请文明评论,理性发言.