这是用前导零选择的代码:
SELECT RIGHT('00000'+ CONVERT(VARCHAR,Asset_No),6)
FROM schemaAsset.SystemDefined
如何将值插入带有前导零的 Asset_no 列?
例如,我只在 Asset_no 列中插入“1”,但在代码中,它将插入“000001”。而且当我插入像 26 这样的两位数字时,它将插入为“000026”。长度不变。这在 SQL Server 中可行吗?
这是用前导零选择的代码:
SELECT RIGHT('00000'+ CONVERT(VARCHAR,Asset_No),6)
FROM schemaAsset.SystemDefined
如何将值插入带有前导零的 Asset_no 列?
例如,我只在 Asset_no 列中插入“1”,但在代码中,它将插入“000001”。而且当我插入像 26 这样的两位数字时,它将插入为“000026”。长度不变。这在 SQL Server 中可行吗?
一种方法是使用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
如果要在 SQL Server 中进行填充,可以使用 INSERT 语句执行以下操作:
DECLARE @Asset_no INT = 12;
INSERT INTO schemaAsset.SystemDefined (Asset_no)
SELECT RIGHT('00000'+ CONVERT(VARCHAR(6),@Asset_No),6)
下面的脚本允许您使用表格中每一行的数字填充一列。这将为您提供从 2000 开始的数字。第一个条目是 0002000。
Declare @id varchar(15)
set @id = '1999'
update sometable
set @id = id = replace(STR(@id + 1,7),' ', '0')
go
对于甲骨文:
lpad(cast(NUMERIC_VAR as VARCHAR2(5 BYTE)),5,'00000')