SQL Server中如何用另一列前N字符加序列号更新code列?
SQL Server 更新customers表code列的实现方案
需求是将customers表中code列更新为「customer列前3个字符 + 按顺序生成的3位带前导零序列号」的格式(如SMI001、SMI002),可以通过以下SQL实现:
实现代码
WITH CustomerSeq AS ( SELECT code, -- 取customer前3个字符转大写,拼接格式化后的3位序列号 UPPER(LEFT(customer, 3)) + FORMAT(ROW_NUMBER() OVER (ORDER BY customer), '000') AS new_code FROM customers ) UPDATE CustomerSeq SET code = new_code;
代码说明
LEFT(customer, 3):提取customer列的前3个字符UPPER():将提取的字符转为大写,匹配示例中的SMI格式(若不需要大写可直接去掉此函数)ROW_NUMBER() OVER (ORDER BY customer):按customer列的顺序生成连续递增的序号,若需要按其他规则排序(如创建时间),替换ORDER BY后的字段即可FORMAT(..., '000'):将序号格式化为3位数字,自动补前导零,比如1转为001、4转为004
内容的提问来源于stack exchange,提问作者Dal F
相关产品推荐
相关产品推荐

