在 Ninox 中操作记录 ID
Ninox 中的记录 ID
- Ninox 中的每条新记录都会被分配一个唯一的 ID(标识符)。
- 对于新建的表,编号从
1开始,每新增一条记录就递增1(2、3等)。 - **已删除的 ID 不会被重新分配。**因此,表中最大的 ID 反映的是已创建记录的总数,其中包括那些已被删除、不再可见的记录。
- ID 的表示形式:
- ID 可以表示为数字,也可以表示为文本。
- 表示为文本时,ID 由表的 ID(一个或多个大写字母)与记录编号组合而成。
例如:"A1"
关于 ID 的要点
- 把 ID 转换为文本:
- 使用
string()函数可获得 ID 的文本表示。 text()函数只会把 ID 的数字部分作为文本返回。例如:"1"。
- 使用
- 示例:
string(maTable.id); // Correct textual representation, e.g., "A1"
text(maTable.id); // Only the numeric part as text, e.g., "1"
- 在表达式中使用 ID:
- 进行算术运算或字符串拼接时,ID 会采用另一侧数据的类型。
- 示例:
var t := "Num ID: " + maTable.id;
输出:Num ID: 1
按 ID 查找记录
要在 where 子句中按 ID 取回一条记录,您可以使用数字,也可以使用文本表示。
使用数字:
select Customer where id = 1;
使用文本:
使用文本时,请确保 ID 同时包含表的 ID 和记录编号。
例如:
select Customer where id = "B1";
从 ID 中提取记录编号
这个函数可以从基于文本的 ID(例如 A1)中提取出记录编号:
function recordNumber(id : text) do
"Capture the digit group.";
number(extractx(id, "^[A-Z]+([0-9]+)$", "", "$1"))
end;
"Example: apply to the current record’s ID"
var numId := recordNumber(string(myId));
string(myId) 把 ID 转换为文本。
正则表达式 ^[A-Z]+([0-9]+)$ 的含义是
^[A-Z]+→ 开头的一个或多个字母,([0-9]+)→ 我们需要的数字(捕获组 1),$→ 字符串结尾。
extractx(..., "", "$1") 只返回捕获到的数字。
number(...) 把该数字字符串转换成数字。
