我想创建一个更新,将“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#]));
答案 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
)