Schreiben internationaler Transact-SQL-Anweisungen

Aktualisiert: 17. Juli 2006

Datenbanken und Datenbankanwendungen, die Transact-SQL-Anweisungen verwenden, können leichter von einer Sprache in eine andere übertragen werden bzw. unterstützen mehrere Sprachen, wenn die folgenden Richtlinien eingehalten werden:

  • Ersetzen Sie alle Vorkommen der Datentypen char, varchar und text durch nchar, nvarchar und nvarchar(max). Auf diese Weise müssen Sie keine Schwierigkeiten mit der Codepagekonvertierung berücksichtigen. Weitere Informationen finden Sie unter Arbeiten mit Unicode-Daten und Serverseitige Programmierung mit Unicode.
  • Wenn Vergleiche und Vorgänge in bestimmten Monaten oder an bestimmten Wochentagen ausgeführt werden, verwenden Sie die numerischen Datumseinheiten anstelle der Namenszeichenfolgen. Unterschiedliche Spracheinstellungen geben verschiedene Namen für Monate und Wochentage zurück. Beispielsweise gibt DATENAME(MONTH,GETDATE()) den Monat May zurück, wenn die Sprache auf US-Englisch festgelegt ist, beim Festlegen der Sprache Deutsch wird Mai und beim Festlegen der Sprache Französisch mai zurückgegeben. Verwenden Sie stattdessen eine Funktion wie DATEPART, die die Monatszahl anstelle des Namens verwendet. Verwenden Sie DATEPART-Namen, wenn Sie Resultsets erstellen, die für einen Benutzer angezeigt werden sollen, da Datumsbezeichnungen häufig aussagekräftiger sind als eine numerische Darstellung. Kopieren Sie jedoch keine logischen Befehle, die davon abhängen, dass die angezeigten Namen aus einer bestimmten Sprache stammen.
  • Wenn Sie Datumseingaben in Vergleichen oder als Eingabe in INSERT- oder UPDATE-Anweisungen angeben, verwenden Sie Konstanten, die in allen Spracheinstellungen gleich interpretiert werden:
    • ADO-, OLE DB- und ODBC-Anwendungen sollten folgende ODBC-Timestamps und folgende ESCAPE-Klauseln für Datum und Zeit verwenden:
      { ts'yyyy-mm-ddhh**:mm:ss[.fff] '}, wie z. B.: { ts'1998-09-24 10:02:20' }**
      { d'yyyy-mm-dd**'}, wie z. B.: { d'1998-09-24'}**
      { t'hh:mm:ss'}, wie z. B.: { t'10:02:20'}

    • Anwendungen, die andere APIs verwenden, oder Transact-SQL-Skripts, gespeicherte Prozedure und Trigger sollten unstrukturierte Zeichenfolgen verwenden. Zum Beispiel yyyymmdd für 19980924.

    • Anwendungen, die andere APIs oder Transact-SQL-Skripts, gespeicherte Prozeduren und Trigger verwenden, sollten die CONVERT-Anweisung mit dem expliziten Parameter style für alle Konvertierungen zwischen den Datentypen date und smalldate und Zeichenfolgen-Datentypen verwenden. Die folgende Anweisung wird beispielsweise für alle Verbindungseinstellungen für Sprach- oder Datumsformate gleich interpretiert:

      SELECT *
      FROM AdventureWorks.Sales.SalesOrderHeader
      WHERE OrderDate = CONVERT(DATETIME, '19960719', 101)
      

      Weitere Informationen finden Sie unter CAST und CONVERT (Transact-SQL).

Siehe auch

Andere Ressourcen

Internationale Überlegungen zu Datenbanken und Datenbankmodulanwendungen

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. Juli 2006

Geänderter Inhalt:
  • Der Verweis auf den ntext-Datentyp wurde durch nvarchar(max) ersetzt.