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