如何创建这样的自定义数据格式?

时间:2014-04-20 08:06:08

标签: sql oracle date oracle-sqldeveloper sqldatatypes

我目前正在使用Oracle SQL Developer 11g。任何人都可以告诉我如何为我的列创建数据格式(然后将它们放在CREATE TABLE命令中):

  1. COACH的ID类型,格式如下:COACH[0-9][0-9][0-9][0-9]例如:COACH0107 (得到它)
  2. DOB(出生日期)DATE类型,格式如下:DD-MM-YYYY (如何创建约束以指定输入DATE必须为DD-MM-YYYY而不是YYYY- MM-DD或其他什么?)

1 个答案:

答案 0 :(得分:2)

  

"所以我想我应该创建自己的DATE类型"

不,你真的不应该。 Oracle以自己的特殊格式存储日期。然后我们可以以我们选择的任何格式显示这些值。这只是在客户端(显示)环境中应用所需掩码的问题。 Find out more

至于强制执行Coach ID的格式,就像大多数有经验的数据库开发人员一样,我不喜欢这样的密钥。他们总是比他们值得更麻烦。但是,有些客户坚持要求。

强制执行数据格式的最佳方法是使用检查约束。使用TRANSLATE()将任意数字转换为标准数字......

 alter table your_table
      add constraint coach_id_format check
          ( translate(coach_id, '0987654321', '9999999999') = 'COACH9999')

每当有人试图保留一个不包含' COACH'的ID时,这将抛出异常。接着是四位数。对于更复杂的面具,你可以使用a regular expression,但这里真的没有必要。