您好我在SQL Server中尝试重新创建的Access查询(下面):
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")));
我在使用FORMAT功能时遇到了问题。
答案 0 :(得分: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);
实际上,为了防止出现问题,我将其称为:
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;
答案 1 :(得分:2)
使用此代替SingletonConfigurationProvider
format([tblProducts].[ProductID], "00000")
答案 2 :(得分:2)
对于 SQL Server 2012 及更高版本,您可以使用:
const
STUFF的另一种方式( SQL Server(从2008年开始)):
UPDATE tblProducts
SET ProductCode = [ProductPrefix] + Format([ProductID],'00000')
WHERE ProductCode IS NULL OR ProductCode != [ProductPrefix] + Format([ProductID],'00000');