【问题标题】:Automatically CONCATENATE text on data entry数据输入时自动连接文本
【发布时间】:2010-06-07 22:02:43
【问题描述】:

我是新手,需要帮助。

我有一个名为“Employees”的表。它有 2 个字段 [number] 和 [encode]。我想自动获取输入到 [number] 中的任何数字并将其存储在 [encode] 中,以便它前面有适当数量的 0,以始终生成 12 位数字。

示例: 用户在[数字]中输入'123','000000000123'会自动存储在[编码]中 用户在[数字]中输入'123456789','000123456789'会自动存储在[编码]中

我想我想写一个触发器来完成这个。我认为这会在数据输入时实现。是这样吗?

主要的想法是这样的:

变量 1 = LENGTH [数字]

variable2 = REPEAT (0,12-variable1)

variable3 = CONCATENATE (variable2, [number])

[编码] = 变量3

我只是不知道如何做到这一点

任何帮助都会很棒。

我有 SQL-SERVER 2005,两个字段都是文本

【问题讨论】:

    标签: sql-server-2005 triggers concatenation


    【解决方案1】:

    以下链接提供了两种用 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,因此代码可能不完全正确,但应该会引导您朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多