在字符串后添加整数增量以获取缺失值 ms-access
Adding integer increment after string for missing values ms-access
我有一个包含道路名称和道路类型的数据集。有许多缺失的道路名称,我想用一个简单的字符串来填充缺失的名称,该字符串声明道路类型,后跟一个唯一整数标识符,如下所示。
路径 1
路径2
路径...
我正在尝试使用 declare 函数,但我的声明中有些地方不正确。
DECLARE @i int
SET @i=0
UPDATE KMS_VEJMIDT_BRUDT
SET VEJNAVN = "Sti"+Str(@i), @i=@i+1
WHERE (((KMS_VEJMIDT_BRUDT.VEJNAVN) Is Null) AND ((KMS_VEJMIDT_BRUDT.VEJMTYPE)="Sti"));
编辑: 我稍微误读了这个问题 - 我添加了 "Sti" 作为生成数字的前缀,并从 1
开始
您可以按照 this answer 中所述的 3 步过程完成此操作。我假设您在 KMS_VEJMIDT_BRUDT
table.
中有一个 ID 主键字段
第 1 步:
使用以下 SQL:
创建名为 GENERATE_NEXT_NAVN
的 SELECT
查询
SELECT C.ID, "Sti"&[RowNo] AS NEXT_VEJNAVN
FROM (SELECT A.ID,
A.VEJMTYPE,
(select count(*) from KMS_VEJMIDT_BRUDT as B where A.ID>=B.ID AND B.VEJNAVN Is Null and A.VEJMTYPE = "Sti" ) AS RowNo
FROM KMS_VEJMIDT_BRUDT AS A
WHERE A.VEJNAVN Is Null
and A.VEJMTYPE = "Sti"
) AS C;
请注意 this answer 中所述的行号解决方法的使用。我使用它从源 table.
中存在的最高 NAVN 开始生成递增数字
第 2 步:
将步骤 1 的查询输出复制到临时 table:
SELECT GENERATE_NEXT_NAVN.*
INTO NEXT_NAVN_TEMP
FROM GENERATE_NEXT_NAVN;
第 3 步:
使用临时 table:
中的值更新源 table
UPDATE KMS_VEJMIDT_BRUDT
INNER JOIN NEXT_NAVN_TEMP
ON KMS_VEJMIDT_BRUDT.ID = NEXT_NAVN_TEMP.ID
SET KMS_VEJMIDT_BRUDT.VEJNAVN = [NEXT_NAVN_TEMP].[NEXT_VEJNAVN];
我有一个包含道路名称和道路类型的数据集。有许多缺失的道路名称,我想用一个简单的字符串来填充缺失的名称,该字符串声明道路类型,后跟一个唯一整数标识符,如下所示。
路径 1 路径2 路径...
我正在尝试使用 declare 函数,但我的声明中有些地方不正确。
DECLARE @i int
SET @i=0
UPDATE KMS_VEJMIDT_BRUDT
SET VEJNAVN = "Sti"+Str(@i), @i=@i+1
WHERE (((KMS_VEJMIDT_BRUDT.VEJNAVN) Is Null) AND ((KMS_VEJMIDT_BRUDT.VEJMTYPE)="Sti"));
编辑: 我稍微误读了这个问题 - 我添加了 "Sti" 作为生成数字的前缀,并从 1
开始您可以按照 this answer 中所述的 3 步过程完成此操作。我假设您在 KMS_VEJMIDT_BRUDT
table.
第 1 步:
使用以下 SQL:
创建名为GENERATE_NEXT_NAVN
的 SELECT
查询
SELECT C.ID, "Sti"&[RowNo] AS NEXT_VEJNAVN
FROM (SELECT A.ID,
A.VEJMTYPE,
(select count(*) from KMS_VEJMIDT_BRUDT as B where A.ID>=B.ID AND B.VEJNAVN Is Null and A.VEJMTYPE = "Sti" ) AS RowNo
FROM KMS_VEJMIDT_BRUDT AS A
WHERE A.VEJNAVN Is Null
and A.VEJMTYPE = "Sti"
) AS C;
请注意 this answer 中所述的行号解决方法的使用。我使用它从源 table.
中存在的最高 NAVN 开始生成递增数字第 2 步: 将步骤 1 的查询输出复制到临时 table:
SELECT GENERATE_NEXT_NAVN.*
INTO NEXT_NAVN_TEMP
FROM GENERATE_NEXT_NAVN;
第 3 步: 使用临时 table:
中的值更新源 tableUPDATE KMS_VEJMIDT_BRUDT
INNER JOIN NEXT_NAVN_TEMP
ON KMS_VEJMIDT_BRUDT.ID = NEXT_NAVN_TEMP.ID
SET KMS_VEJMIDT_BRUDT.VEJNAVN = [NEXT_NAVN_TEMP].[NEXT_VEJNAVN];