Statt der Berechnung, was der letzte Name jedes Mal, wenn Sie die Abfrage ausführen möchten, können Sie eine berechnete Spalte, die den Ist-Wert in eine Spalte bleibt das kann wie jede andere Spalte verwendet werden.
ALTER TABLE Customer
ADD LastName AS
RIGHT(FullName, CHARINDEX(' ', REVERSE(FullName)) - 1) PERSISTED
Dieses Fügt die Spalte Name VZ zum Customer-Tabelle, verwendet die Funktion den Wert des Nachnamens berechnen angegeben, und speichert sie auf der physischen Tabelle. Das Schlüsselwort PERSISTED am Ende ist erforderlich, damit der Wert auf dem Datenträger gespeichert wird. Andernfalls wird er jedes Mal berechnet, wenn eine Abfrage ausgeführt wird.
Edit: Um mit Werten ohne Leerzeichen umgehen:
ALTER TABLE Customer
ADD LastName AS
case when CHARINDEX(' ', REVERSE(FullName)) > 0
then RIGHT(FullName, CHARINDEX(' ', REVERSE(FullName)) - 1)
else
FullName
end
PERSISTED
Obwohl Sie mit dieser Funktion Geige können, wie Sie wollen, um zu bestimmen, was in diesem Fall passiert. Ich möchte zeigen, dass Fallanweisungen verwendet werden können. Möglicherweise möchten Sie auch alle Ausgabepfade auf denselben Typ umwandeln, um Typkonflikte zu vermeiden.
Definieren Sie den Nachnamen. Mein Name ist "Robert Henry Smith". –
@Dominic: Es müsste wahrscheinlich das letzte Wort sein, dem ein Leerzeichen folgt. Natürlich wird es Ausnahmen geben, aber das würde wahrscheinlich für die meisten Namen funktionieren. – FrustratedWithFormsDesigner
Ich habe in der Frage geklärt. – GateKiller