自动CONCATENATE数据输入文本

时间:2010-06-07 22:02:44

标签: sql-server-2005 triggers concatenation

我是新手,需要帮助。

我有一张名为“员工”的表。它有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,两个字段都是文本

1 个答案:

答案 0 :(得分:0)

以下链接提供了两种方法,用0填充数字以使其具有特定长度。

http://blog.sqlauthority.com/2009/03/10/sql-server-pad-ride-side-of-number-with-0-fixed-width-number-display/

在触发器中,它可能如下所示:

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,因此代码可能不完全正确,但是应该引导您朝着正确的方向发展。