Ich habe eine Tabelle Kontakte.T-SQL Eindeutige Codes generieren
CREATE TABLE [dbo].[Contacts](
[ContactId] [int] IDENTITY(1,1) NOT NULL,
[ContactCode] [nvarchar](10) NOT NULL, --UNIQUE
[FirstName] [nvarchar](24) NOT NULL,
[MiddleName] [nvarchar](12) NULL,
[LastName] [nvarchar](24) NOT NULL,
CONSTRAINT [PK_Contacts] PRIMARY KEY CLUSTERED
(
[ContactId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Ich möchte in der Lage sein, einen 10-stellige Kontakt Code aus der gespeicherten Prozedur zu erzeugen, die von
First Two Digits of FirstName
First Digit of MiddleName(When MiddleName is not blank)
First Two or Three(When MiddleName is Blank) Digits of Last Name
Four digit number starting from zero.
Beispiel umfassen sollte.
John M. Denver = JOMDE-0001
John Denver = JODEN-0001
John Denver = JODEN-0002
Bob Dylan = BODYL-0001
Die vorgeschlagene Lösung könnte eine Funktion sein, die innerhalb der gespeicherten Prozedur aufgerufen werden kann, bevor die Werte in der Tabelle gespeichert werden.
CREATE FUNCTION GetContactCode
(
@FirstName nvarchar(24),
@MiddleName nvarchar(12),
@LastName nvarchar(24)
)
RETURNS nvarchar(10)
AS
BEGIN
RETURN('CODE')
END
Kann jemand helfen?
Warum verwenden Sie 'nvarchar (10)' wenn es immer 10 Zeichen lang sein wird? –
Weil char kein Unicode-Zeichen speichern kann :). –
NChar kann aber – Robb