5

这是用前导零选择的代码:

SELECT RIGHT('00000'+ CONVERT(VARCHAR,Asset_No),6) 
  FROM schemaAsset.SystemDefined

如何将值插入带有前导零的 Asset_no 列?

例如,我只在 Asset_no 列中插入“1”,但在代码中,它将插入“000001”。而且当我插入像 26 这样的两位数字时,它将插入为“000026”。长度不变。这在 SQL Server 中可行吗?

4

4 回答 4

7

一种方法是使用INSTEAD OF触发器。

USE tempdb;
GO

CREATE TABLE dbo.whatever
(
  Asset_No VARCHAR(6)
);
GO

CREATE TRIGGER dbo.fix_whatever
ON dbo.whatever
INSTEAD OF INSERT
AS
BEGIN
  SET NOCOUNT ON;
  INSERT dbo.whatever(Asset_No /*, other columns */)
    SELECT RIGHT('000000' + CONVERT(VARCHAR(6), Asset_No), 6)
      /*, other columns */
    FROM inserted;
END
GO

INSERT dbo.whatever(Asset_No) SELECT '22';
GO

SELECT Asset_No FROM dbo.whatever;
GO

结果:

Asset_No
--------
000022
于 2013-03-06T01:14:47.537 回答
2

如果要在 SQL Server 中进行填充,可以使用 INSERT 语句执行以下操作:

DECLARE @Asset_no INT = 12;

INSERT INTO schemaAsset.SystemDefined (Asset_no)
  SELECT RIGHT('00000'+ CONVERT(VARCHAR(6),@Asset_No),6)
于 2013-03-06T01:15:14.893 回答
0

下面的脚本允许您使用表格中每一行的数字填充一列。这将为您提供从 2000 开始的数字。第一个条目是 0002000。

Declare @id varchar(15)  
set @id = '1999'  
update sometable  
set @id = id = replace(STR(@id + 1,7),' ', '0')  
go
于 2015-03-10T15:53:54.730 回答
-2

对于甲骨文:

lpad(cast(NUMERIC_VAR as VARCHAR2(5 BYTE)),5,'00000')

于 2014-08-01T20:25:54.517 回答