Sql 使用备份选项更新查询

Sql 使用备份选项更新查询,sql,ms-access,Sql,Ms Access,我想创建一个更新,将“xxx”添加到产品编号的开头,可以在中找到 table.ProductNo 偶尔,可能已经有一段代码在开头添加了xxx(因为有时产品编号会被回收——我知道这是一个糟糕的系统,但事情就是这样发展的) 如果“xxx[table.productNo]”已经存在,如何创建一个只在开头添加“xx”的查询 我当前使用的语句是 UPDATE table SET table.ProductNo = "xxx" & [table.productNo], tabl

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

尝试使用
CASE
语句使其正常工作

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

访问
开关
语句包括:

UPDATE table
SET product_id = SWITCH(
    productNo LIKE 'xxx*', 'xx' + productNo,
    TRUE, 'xxx' + productNo --Default
    )
您想将xxx添加到
ProductNo
的开头,除非它已经以xxx开头。在这种情况下,您希望添加xx

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

将表更新为t
设置
t、 ProductNo=IIf(左(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
式中(((t.ProductNo)=[输入产品]);

询问代码的问题必须表明对所解决问题的理解程度最低。包括尝试的解决方案,以及它们不起作用的原因。@FreshPrinceOfSO我已编辑该问题以包括我当前的查询。这个问题已经提到了。xxx[table.ProductNo]不能存在两次。对不起,我应该说得更清楚一些。这是在访问。我认为案例陈述不起作用。除非我读错了?我相信你可以用SWITCH语句来代替。看看这个:第二个“xxx”的目的是什么?在第3行?
IIf(条件,真实部分,虚假部分)
所以我想你是在问关于虚假部分的问题。这意味着当
ProductNo
的前3个字符不是“xxx”时,返回“xxx”。然后将从
IIf
表达式返回的任何内容添加到
ProductNo
的开头。