标记 SQL Oracle 开发人员最佳实践

Posted

技术标签:

【中文标题】标记 SQL Oracle 开发人员最佳实践【英文标题】:Flag Best Practice in SQL Oracle developer 【发布时间】:2021-03-30 23:51:07 【问题描述】:

我有一个问题,我刚刚在 CASE 中创建了很多标志(...“是”或“否”,我不知道转换为最小格式 VARCHAR 或 VACHAR2 的最佳实践?

喜欢这个:

-- 在 FO(标志)中创建

CASE
WHEN CRE_DD.DIVISION  IN( 
    'Postinfo 1st line' ,
    'CX - CC INFODESK' ,
    'CC FO First Line' ,
    'CX - CC MIDDLE OFFICE'
)
OR  ( CRE_DD.DIVISION =  'FINES CC' AND DSR.ENTRY_CHANNEL = 'Phone')
THEN 'YES'
ELSE 'NO'
END   AS "Created in FO (flag)",

--FO处理(标志)

 CASE
 WHEN CUR_DD.DIVISION IN ('Postinfo 1st line' ,'CX - CC INFODESK','CC FO First Line' )
       
         OR  (CUR_DD.DIVISION =  'FINES CC' AND DSR.ENTRY_CHANNEL = 'Phone')
    
 THEN 'YES'
      ELSE 'NO'
           END AS "FO treatment (flag)",

【问题讨论】:

您能提供一些您的表格的示例条目吗? Oracle 建议创建varchar2 来存储可变长度的文本。 而且,在选择 In Oracle 中可以测量我的列的大小? 是的,你可以,尽管varchar2 有两个不同的变体来限制其长度,通过chars 或bytes,通过定义varchar2(50) 这将默认为charvarchar2(64 byte),将提供 64 字节空间,因为某些字符占用超过一个字节 好的,谢谢,是或否我选择 vachar2( ? ) ? 【参考方案1】:

在 Oracle 中,只有 VARCHAR2CHAR 字符串数据类型适用于您的数据(NVARCHAR2NCHARCLOB 不适用)。

VARCHAR is a synonym of VARCHAR2;因此,询问您是否应该使用其中一个是没有意义的,因为它们是同一件事。只需使用VARCHAR2 而不是使用其同义词。

不要使用CHAR,因为它会用空格右填充字符串,所以你不会有'NO',而是会有'NO ',它在比较中可能并不总是像预期的那样表现,必须修剪尾随空格。

如果您使用的可变长度字符串可以是 'YES''NO',并且您想将它们放入表中,则将该列定义为 VARCHAR2(3)

例如:

CREATE TABLE your_table (
  id   NUMBER(10,0)
       GENERATED ALWAYS AS IDENTITY
       CONSTRAINT your_table__id__pk PRIMARY KEY,
  data NUMBER,
  flag VARCHAR2(3)
       NOT NULL
       CONSTRAINT your_table__flag__ck CHECK ( flag IN ( 'YES', 'NO' ) )
);

INSERT INTO your_table ( data, flag )
SELECT data,
       CASE
       WHEN some_condition = 1
       THEN 'YES'
       ELSE 'NO'
       END
FROM   other_table;

如果您使用的是视图,则只需使用字符串文字 'YES''NO' 并允许 Oracle 隐式管理数据类型,您无需担心。

例如:

CREATE VIEW your_view ( id, data, flag ) AS
SELECT id,
       data,
       CASE
       WHEN some_condition = 1
       THEN 'YES'
       ELSE 'NO'
       END
FROM   other_table;

【讨论】:

以上是关于标记 SQL Oracle 开发人员最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

版本控制最佳实践

选择云计算开发工具的5个最佳实践

用于 Oracle 开发人员/dba 的 SQL 服务器

长期 Oracle 开发人员/DBA 学习 SQL Server - 书籍推荐?

IDE插件在58研发提效上的实践

Oracle AVDF数据库审计与防火墙最佳实践