2010-06-07 3 views
0

Je suis un débutant et j'ai besoin d'aide.automatiquement CONCENTRER le texte sur la saisie de données

J'ai une table appelée "Employés". Il a 2 champs [nombre] et [encoder]. Je veux prendre automatiquement n'importe quel nombre entré dans [nombre] et le stocker dans [encoder] afin qu'il soit précédé de la quantité appropriée de 0 pour toujours faire 12 chiffres.

Exemple: utilisateur entre '123' dans [nombre], '000000000123' est automatiquement stocké dans [encode] utilisateur entre '123456789' en [nombre], '00' est automatiquement stocké dans [encode]

Je pense que je veux écrire un déclencheur pour accomplir ceci. Je pense que cela se produirait au moment de la saisie des données. Est-ce correct?

L'idée principale est serait quelque chose comme ceci:

variable1 = longueur [nombre]

variable2 = REPEAT (0,12- variable1)

variable 3 = CONCATENER (variable2, [nombre])

[encode] = variable 3

Je ne sais pas assez pour que cela se produise

Toute aide serait FANTASTIQUE.

J'ai SQL Server 2005 et les deux champs sont texte

Répondre

0

Le lien suivant fournit deux méthodes pour un nombre avec des 0 pour en faire une longueur spécifique.

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

Dans un déclencheur, il pourrait ressembler à ceci:

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 

Je ne dispose pas actuellement SQL Server, de sorte que le code peut ne pas être tout à fait correct, mais est que vous devez orienter dans la bonne direction.

Questions connexes