【发布时间】:2015-05-21 16:24:38
【问题描述】:
所以我正在编辑 SQL 服务器 (2008 R2) 上的现有存储过程。由于我对 SQL 的入门级知识,我遇到了一些问题。问题是此生成的报告的要求已更改,并且字段的值已从 2 更改为 3。报告上的字段长度已由以前的用户更改,但他们从未考虑过字段仅等于 2 个字符。 IE。 20 或 03 而不是 100。这导致报告生成如下值: '03 XX' 而不是 003XX 这是一个问题,因为接收到它的系统会从右到左读取它,因此它会看到这些 Null 值并拒绝整个报告。
我想要做的是将现有的 SET 语句更改为条件语句,当字段值的长度仅为 2 个字符时添加填充“0”。
我目前拥有的是这样的:
SET @SupplyQuan = ISNULL((SELECT Unit FROM dbo.Supplyvalue(@UserID)
WHERE Number = 3),'')
我需要的是一个类似于以下内容的声明。我遇到问题的术语是“字符值”。我找不到“单元格”或字段值的 SQL 术语。我在想可能是“列值”,但这似乎不正确。我确信答案是一个非常基本的答案,我可能想多了。这是代码。
SET @SupplyQuan = ISNULL((SELECT Unit FROM dbo.Supplyvalue(@UserID)
WHERE Number = 3),'') IF “Charactervalue=3” ELSE IF “Charactervalue=2” THEN
SET @SupplyQuan = ISNULL('0'+(SELECT Unit FROM dbo.Supplyvalue(@UserID)
WHERE Number = 3),'')
【问题讨论】:
-
您是否在 SQL Server 中寻找
replicate函数,如 this example 中的函数?请注意,您必须传入一个字符串,而不是 int、int 或 numeric 会截断前导零! -
我可以试试复制功能。我还没有考虑过。
标签: sql sql-server tsql sql-server-2008 stored-procedures