在 Firebird 中如何创建二维 char 数组域

In Firebird How to create a two dimensional char array domain

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

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

如果我在 table 字段或过程输入中使用此域,insert/select/update 语句是什么。

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

我强烈建议避免在 Firebird 中使用数组。它们主要是 InterBase 之前 SQL 功能的遗留物,几乎无法用于 SQL 语言。

但是,对于声明数组域的语法,请参阅 documentation on domains:

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的数组,当然不是'没道理。如果您想要多维数组,请用逗号 (,) 分隔边界。另请参阅 array type.

上的文档

换句话说,使用:

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