我有一个包含道路名称和道路类型的数据集。有许多遗漏的道路名称,我想用一个简单的字符串填充缺少的名字,声明道路类型后跟一个唯一的整数标识符,如下所示。
路径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"));
答案 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;