Автоматически СОЗДАТЬ текст при вводе данных - PullRequest
0 голосов
/ 08 июня 2010

Я новичок и мне нужна помощь.

У меня есть таблица под названием «Сотрудники». Имеет 2 поля [число] и [кодировать]. Я хочу автоматически взять любой номер, введенный в [число], и сохранить его в [кодировать], чтобы ему предшествовало соответствующее количество нулей, чтобы всегда было 12 цифр.

Пример: пользователь вводит «123» в [число], «000000000123» автоматически сохраняется в [кодировать] пользователь вводит «123456789» в [число], «000123456789» автоматически сохраняется в [кодировать]

Я думаю, что хочу написать триггер для достижения этой цели. Я думаю, что это могло бы произойти во время ввода данных. это правильно?

Основная идея была бы примерно такой:

переменная1 = ДЛИНА [число]

переменная2 = ПОВТОР (0,12- переменная1 )

переменная3 = CONCATENATE ( переменная2 , [число])

[кодировать] = переменная3

Я просто не знаю достаточно, чтобы это произошло

ЛЮБАЯ помощь будет ФАНТАСТИЧЕСКОЙ.

У меня SQL-SERVER 2005 и оба поля текстовые

1 Ответ

0 голосов
/ 08 июня 2010

Следующая ссылка предоставляет два способа дополнить число нулями для придания ему определенной длины.

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, поэтому код может быть не совсем правильным, но он должен направить вас в правильном направлении.

...