在SQL中格式化

Bun*_*ion 3 sql sql-server ms-access

嗨,我有一个Access查询(下面),我正在尝试在SQL Server中重新创建:

UPDATE tblProducts SET tblProducts.ProductCode = [tblProducts].[ProductPrefix] & 
Format([tblProducts].[ProductID],"00000")
WHERE (((tblProducts.ProductCode) Is Null Or (tblProducts.ProductCode) <>[tblProducts].[ProductPrefix] & 
Format([tblProducts].[ProductID],"00000")));
Run Code Online (Sandbox Code Playgroud)

我在使用FORMAT功能时遇到问题.

Gor*_*off 5

这是一种进行格式化的方法:

UPDATE tblProducts 
    SET ProductCode = [ProductPrefix] +
                      RIGHT('00000' + CAST(COALESCE(ProductId, 0) as VARCHAR(255)), 5)
WHERE ProductCode Is Null OR
      ProductCode <> [ProductPrefix] + RIGHT('00000' + CAST(ProductId as VARCHAR(255)), 5);
Run Code Online (Sandbox Code Playgroud)

实际上,为了防止出现问题,我将其称为:

WITH toupdate AS (
      SELECT p.*,
             ([ProductPrefix] +
               RIGHT('00000' + CAST(COALESCE(ProductId, 0) as VARCHAR(255)), 5)
             ) as new_ProductCode
      FROM tblProducts p
     )
UPDATE toupdate
    SET  ProductCode = new_ProductCode
    WHERE ProductCode Is Null OR
          ProductCode <> new_ProductCode;
Run Code Online (Sandbox Code Playgroud)