从角度形式复选框保存布尔值真/假并将其保存到像 Oracle 这样的后端数据库的正确方法是什么?

罗伯·德皮特罗

例如使用 Angular Material 和使用 [(ngModel)]="isActive" name="isActive"

这将提交带有“isActive”= true的表单

在数据库中保存它的正确方法是什么?我知道在 Oracle 中并没有真正的布尔数据类型......

它应该保存为 Char 数据类型吗?但如果是这样,那么它期望的 'T' 或 'F' 不是真的或假的。

它应该保存为 varchar 吗?那么它可以除真假吗?

感谢您提供有关此的任何信息或适当的数据结构。

鲍勃贾维斯 - 恢复莫妮卡

您存储布尔值的方式在很大程度上取决于存储该值的字段的语义。有时将布尔值存储为包含“T”/“F”、“Y”/“N”、“IN”/“OUT”、“BLACK”/“WHITE”、“PINK”/“BLUE”的字符字段是合理的,或任何适合您的数据。有时您可能希望将该布尔值作为 NUMBER 存储在 Oracle 中,允许值为 1 和 0、或 100 / 0、或 1 / -1,或任何适合您需要的值。我们经常使用布尔值来表示任意数量的不同事物——这就是 Oracle 不提供布尔类型的原因。您应该使用适合您的应用程序的数据类型和值。

至于 CHAR 与 VARCHAR2 参数,我建议使用 VARCHAR2,因为 CHAR 并不总是像您(或至少“我”:-) 期望的那样。作为解释,请考虑以下块:

DECLARE 
  PROCEDURE test_string(pinString IN VARCHAR2) IS
    strTest  VARCHAR2(3) := pinString;
    cTest    CHAR(3)     := pinString;
  BEGIN
    DBMS_OUTPUT.PUT_LINE('strTest=' || CASE
                                         WHEN strTest IS NULL THEN 'NULL'
                                         ELSE '''' || strTest || ''''
                                       END ||
                         '  cTest=' || CASE
                                         WHEN cTest IS NULL THEN 'NULL'
                                         ELSE '''' || cTest || ''''
                                       END);
  END test_string;

BEGIN
  test_string('A');
  test_string('AB');
  test_string('ABC');
  test_string('');
  test_string(NULL);
END;

运行此输出时:

strTest='A'  cTest='A  '
strTest='AB'  cTest='AB '
strTest='ABC'  cTest='ABC'
strTest=NULL  cTest='   '
strTest=NULL  cTest=NULL

前三行和最后一行并不意外,但第四行让我有点意外。我一直都明白空字符串等价于 NULL。但是,第四行和第五行的输出似乎与该假设相反。在第四行中,我们为 VARCHAR2 输入参数分配了一个长度为零的字符串,该参数随后分配给了 strTest 和 cTest。在 strTest 的情况下,当我们在 VARCHAR2 测试代码中测试它时,它被检测为 NULL。但是,当将此零长度字符串分配给 cTest 时,cTest 会在右侧用空格填充,直到它达到 3 个字符的完整长度。在 CHAR 数据类型的上下文中考虑时,这并不奇怪,但根据我对 VARCHAR2 的使用,它产生了我不期望的结果。它'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP - 循环复选框并将其保存到数据库

来自分类Dev

如何获取选中和未选中复选框数组的所有值并将其保存到PHP中的数据库

来自分类Dev

上传、压缩图像并将其作为 blob 保存到 oracle 数据库中

来自分类Dev

vb.net数据库查询和复选框,正确的方法是什么?

来自分类Dev

保存多个复选框值并使用Laravel保存到数据库

来自分类Dev

动态复选框不会保存到数据库

来自分类Dev

如何使用按钮将数据从复选框值保存到数据库

来自分类Dev

将复选框值保存到codeiniter中的数据库中

来自分类Dev

如何将多个选定的复选框值保存到数据库 mvc

来自分类Dev

在Oracle数据库中,$是什么?

来自分类Dev

为什么oracle数据库不存储表值?

来自分类Dev

PrestoDB可以连接到像Oracle这样的关系数据库吗?

来自分类Dev

进行注册身份验证并将其存储在数据库中的正确方法是什么?

来自分类Dev

复选框值未正确保存到 wordpress 元数组中

来自分类Dev

如何将复选框数组中的数据保存到数据库中

来自分类Dev

使用 django-rest-framework 在数据库中保存 200 个对象的正确方法是什么?

来自分类Dev

在Oracle数据库中,$-表示法是什么?

来自分类Dev

在PHP中将多个复选框保存到数据库

来自分类Dev

如何在Rails 6中将多个复选框保存到数据库

来自分类Dev

使用Laravel 5.1将复选框数组保存到数据库

来自分类Dev

在PostGres数据库中存储复选框的最佳方法是什么

来自分类Dev

值约束,Oracle数据库

来自分类Dev

值未保存到后端数据库

来自分类Dev

在MySQL / Oracle数据库中切换布尔值

来自分类Dev

将纬度/经度坐标保存到数据库中并在 javascript 中分配到路径的正确格式是什么?

来自分类Dev

是否保存要恢复的oracle数据库状态?

来自分类Dev

需要根据数据库中保存的值检查复选框列表

来自分类Dev

如何在数据库的不同行中保存多个复选框值

来自分类Dev

Oracle Apex 4.2.4仅显示未保存到数据库的字段

Related 相关文章

  1. 1

    PHP - 循环复选框并将其保存到数据库

  2. 2

    如何获取选中和未选中复选框数组的所有值并将其保存到PHP中的数据库

  3. 3

    上传、压缩图像并将其作为 blob 保存到 oracle 数据库中

  4. 4

    vb.net数据库查询和复选框,正确的方法是什么?

  5. 5

    保存多个复选框值并使用Laravel保存到数据库

  6. 6

    动态复选框不会保存到数据库

  7. 7

    如何使用按钮将数据从复选框值保存到数据库

  8. 8

    将复选框值保存到codeiniter中的数据库中

  9. 9

    如何将多个选定的复选框值保存到数据库 mvc

  10. 10

    在Oracle数据库中,$是什么?

  11. 11

    为什么oracle数据库不存储表值?

  12. 12

    PrestoDB可以连接到像Oracle这样的关系数据库吗?

  13. 13

    进行注册身份验证并将其存储在数据库中的正确方法是什么?

  14. 14

    复选框值未正确保存到 wordpress 元数组中

  15. 15

    如何将复选框数组中的数据保存到数据库中

  16. 16

    使用 django-rest-framework 在数据库中保存 200 个对象的正确方法是什么?

  17. 17

    在Oracle数据库中,$-表示法是什么?

  18. 18

    在PHP中将多个复选框保存到数据库

  19. 19

    如何在Rails 6中将多个复选框保存到数据库

  20. 20

    使用Laravel 5.1将复选框数组保存到数据库

  21. 21

    在PostGres数据库中存储复选框的最佳方法是什么

  22. 22

    值约束,Oracle数据库

  23. 23

    值未保存到后端数据库

  24. 24

    在MySQL / Oracle数据库中切换布尔值

  25. 25

    将纬度/经度坐标保存到数据库中并在 javascript 中分配到路径的正确格式是什么?

  26. 26

    是否保存要恢复的oracle数据库状态?

  27. 27

    需要根据数据库中保存的值检查复选框列表

  28. 28

    如何在数据库的不同行中保存多个复选框值

  29. 29

    Oracle Apex 4.2.4仅显示未保存到数据库的字段

热门标签

归档