2008-09-16 12 views

Antwort

2

Es ist, dass InStr()/SubString() Operator (1) zu Operator (001) ändert, das n in Operator (n) separat speichert oder eine berechnete Spalte erstellt, die die hässliche Zeichenfolgenbearbeitung ausblendet. Was du hast, scheint gut zu sein.

0

Meine Antwort wäre, das Problem zu ändern. Ich würde ein operatorNumber Feld zur Tabelle hinzufügen, wenn das möglich ist. Ändern Sie die Aktualisierungs-/Einfüge-Routinen, um die Nummer zu extrahieren und zu speichern. Auf diese Weise wird nur einmal pro Datensatz der String konvertiert.

Die Sortierlogik würde die Zeichenfolgenkonvertierung bei jeder Ausführung der Abfrage erfordern.

0

Nun, zuerst definieren Sie die Bedeutung dieser Spalte. Ist der Operator ein Name, damit Sie die Verwendung von Zeichen rechtfertigen können? Oder ist es eine Nummer?

Wenn das Feld ein Name ist, dann verwenden Sie Zeichen, und dann möchten Sie die feste Länge bestimmen. Setzen Sie alle Operatornamen links mit Nullen auf. Definieren Sie Benennungsregeln für Operatoren (I. E. No leters. Oder die Codes, die Sie in einer Serie wie "A001" verwenden würden)

Ein Index sortiert die physischen Daten im Server. Und eine richtig definierte Textbenennung wird sie in einer Abfrage sortieren. Du würdest beides wollen.

Wenn der Operator eine Zahl ist, dann haben Sie den Datentyp für diese Spalte falsch und müssen geändert werden.

1

Wenn Sie wirklich haben, um die Daten in dem Format zu lassen, das Sie haben - und eine numerische Sortierreihenfolge Spalte ist die bessere Lösung - dann erwägen Sie, die Textbearbeitung in einer benutzerdefinierten Funktion.

wählen colname aus der Tabelle, um durch dbo.udfSortOperator (colname)

Es ist weniger hässlich und gibt Ihnen eine Abstraktion. Es gibt einen zusätzlichen Overhead des Funktionsaufrufs, aber in einer Tabelle, die niedrige Tausende von Zeilen in einem nicht allzu schwer betroffenen Datenbankserver enthält, ist dies kein großes Problem. Machen Sie Notizen in der Funktion, um später bei Bedarf zu optomisieren.

0

indexierte Spalte berechnet

Wenn Sie sich finden, Bestellung oder auf andere Weise die Abfrage operator Spalte häufig, sollten Sie eine berechnete Spalte für seinen numerischen Wert zu schaffen und einen Index für das Hinzufügen. Dies gibt Ihnen eine berechnete/persistente Spalte (die wie Oxymoron klingt, aber nicht ist).