使用备份选项更新查询

时间:2013-11-18 15:28:18

标签: sql ms-access

我想创建一个更新,将“xxx”添加到产品编号的开头,该编号可在

中找到
table.ProductNo

偶尔可能已经有一个代码在开头添加了xxx(因为有时产品编号会被回收 - 我知道这个系统很糟糕,但事情就是如此)。

如果“xxx [table.productNo]”已经存在,如何创建一个只会在开头添加“xx”的查询?

我目前使用的声明是

UPDATE table SET 
    table.ProductNo = "xxx" & [table.productNo], 
    table.Description = "xxx" & [table.Description], 
    table.OnInternet = 0, 
    table.OnInternetfs = 0, 
    table.OnFlyer = 0, 
    table.OnFSFlyer = 0
WHERE (((table.ProductNo)=[Enter Product#])); 

2 个答案:

答案 0 :(得分:2)

您希望将 xxx 添加到ProductNo的开头,除非它已经以 xxx 开头。在这种情况下,您想要添加 xx

如果这是正确的,您可以使用IIf表达式来决定是否添加2或3个 x 字符。

UPDATE table AS t
SET
    t.ProductNo = IIf(Left(t.ProductNo, 3) = 'xxx', 'xx', 'xxx')
        & [t.productNo],
    t.Description = "xxx" & [t.Description],
    t.OnInternet = 0,
    t.OnInternetfs = 0,
    t.OnFlyer = 0,
    t.OnFSFlyer = 0
WHERE (((t.ProductNo)=[Enter Product#]));

答案 1 :(得分:1)

尝试使用CASE语句来实现此功能。

UPDATE t
SET productNo = CASE WHEN productNo LIKE 'xxx%' THEN 'xx' + productNo ELSE 'xxx' + productNo END
FROM table t

<强>更新

访问SWITCH声明包括:

UPDATE table
SET product_id = SWITCH(
    productNo LIKE 'xxx*', 'xx' + productNo,
    TRUE, 'xxx' + productNo --Default
    )