我是新手,需要帮助。
我有一张名为“员工”的表。它有2个字段[number]和[encode]。我想自动将[number]中输入的任何数字存储在[编码]中,以便在其前面加上适当的0,以便始终生成12位数字。
实施例: 用户在[数字]中输入'123','000000000123'自动存储在[编码]中 用户在[编号]中输入'123456789','000123456789'自动存储在[编码]中
我想我想写一个触发器来完成这个。我认为这会在数据输入时发生。是吗?
主要想法是这样的:
variable1 = LENGTH [number]
variable2 = REPEAT(0,12- variable1 )
variable3 = CONCATENATE( variable2 ,[number])
[encode] = variable3
我只是不知道如何才能实现这一目标
任何帮助都会很棒。
我有SQL-SERVER 2005,两个字段都是文本
答案 0 :(得分:0)
以下链接提供了两种方法,用0填充数字以使其具有特定长度。
在触发器中,它可能如下所示:
CREATE TRIGGER InsertEncodePadded
ON Employees
INSTEAD OF INSERT 'Use instead of to make sure you don't get start a recursive insert
AS
BEGIN
DECLARE @number varchar(12);
DECLARE @encoded varchar(12);
SELECT @number = [number] from inserted;
SET @encoded = RIGHT(REPLICATE('0', 12) + @number, 12);
INSERT INTO Employees VALUES(@number, @encoded);
END
GO
我目前没有SQL Server,因此代码可能不完全正确,但是应该引导您朝着正确的方向发展。