首页 > 解决方案 > 在 Firebird 中如何创建二维 char 数组域

问题描述

如何创建二维字符数组域,例如:值

['ABC-12121212','1']
['ABC-12323233','2'] 

如果我在表字段或过程输入中使用此域,那么插入/选择/更新语句是什么。

CREATE DOMAIN TESTARRAY AS CHAR(14) [500:2];吗?

标签: firebird

解决方案


我强烈建议避免在 Firebird 中使用数组。它们在很大程度上是 InterBase 的 pre-SQL 特性的保留,几乎不能从 SQL 语言中使用。

但是,有关声明数组域的语法,请参阅有关 domain 的文档

CREATE DOMAIN name [AS] <datatype>
  [DEFAULT {<literal> | NULL | <context_var>}]
  [NOT NULL] [CHECK (<dom_condition>)]
  [COLLATE collation_name]

<datatype> ::=
    {SMALLINT | INTEGER | BIGINT} [<array_dim>]
  | {FLOAT | DOUBLE PRECISION} [<array_dim>]
  | {DATE | TIME | TIMESTAMP} [<array_dim>]
  | {DECIMAL | NUMERIC} [(precision [, scale])] [<array_dim>]
  | {{CHAR | CHARACTER} [VARYING] | VARCHAR} [(size)]
    [<array_dim>] [CHARACTER SET charset_name]
  | {NCHAR | NATIONAL {CHARACTER | CHAR}} [VARYING]
    [(size)] [<array_dim>]
  | BLOB [SUB_TYPE {subtype_num | subtype_name}]
    [SEGMENT SIZE seglen] [CHARACTER SET charset_name]
  | BLOB [(seglen [, subtype_num])]

<array_dim> ::= '[' [m:]n [,[m:]n ...] ']'

m:n指的是数组的下限和上限,所以表示500:2下限为 500 上限为 2 的数组,这当然没有意义。如果您需要多维数组,则用逗号 ( ,) 分隔边界。另请参阅有关数组类型的文档。

换句话说,使用:

CREATE DOMAIN TESTARRAY AS CHAR(14) [500,2];

推荐阅读