在字符串之后为缺失值ms-access添加整数增量

时间:2017-06-09 13:48:33

标签: sql ms-access ms-access-2007

我有一个包含道路名称和道路类型的数据集。有许多遗漏的道路名称,我想用一个简单的字符串填充缺少的名字,声明道路类型后跟一个唯一的整数标识符,如下所示。

路径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"));

1 个答案:

答案 0 :(得分:0)

编辑:我误解了这个问题 - 我添加了“Sti”作为生成数字的前缀,并从1开始

您可以按照this answer中所述的3个步骤执行此操作。我假设你在KMS_VEJMIDT_BRUDT表中有一个ID主键字段。

第1步:

使用以下SQL创建名为SELECT的{​​{1}}查询:

GENERATE_NEXT_NAVN

请注意使用this answer中所述的行号解决方法。我使用它来从源表中存在的最高NAVN开始生成递增数。

第2步: 将步骤1的查询输出复制到临时表中:

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;

第3步: 使用临时表中的值更新源表:

SELECT GENERATE_NEXT_NAVN.* 
INTO NEXT_NAVN_TEMP
FROM GENERATE_NEXT_NAVN;