Announcement

Collapse
No announcement yet.

Æ = AE unter MS-SQL 7.0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Æ = AE unter MS-SQL 7.0

    Unter dem MS-SQL-Server werden die Zeichen Æ und AE als gleiche Zeichen behandelt (nvarchar-Felder), wenn auf einer entsprechenden Spalte ein Index liegt.

    So können keine Datensätze 'Æ' und 'AE' in das entsprechende Feld eingetragen werden, obwohl es sich hierbei sehr wohl um 2 unterschiedliche Zeichen handelt.

    Kann man dieses Verhalten abstellen bzw. weiß jemand für welche Kombination dieses Verhalten noch gilt.

  • #2
    Hallo,

    >Kann man dieses Verhalten abstellen ...

    mir ist ein weiterer Fall bekannt, bei dem die exakte Schreibweise von Interesse ist. Angenommen, eine Tabelle hätte den folgenden Inhalt:
    <pre>
    USE tempdb
    GO

    CREATE TABLE Customers (
    CustNo INTEGER NOT NULL PRIMARY KEY,
    LastName VARCHAR(10) NOT NULL,
    FirstName VARCHAR(10) NOT NULL)
    GO

    INSERT INTO Customers VALUES (1,'Regel','Wolfgang')
    INSERT INTO Customers VALUES (2,'Ritz','Bernd')
    INSERT INTO Customers VALUES (3,'Lindner','Andreas')
    INSERT INTO Customers VALUES (4,'ritz','Bernd')
    GO
    </pre>
    In diesem Fall würde eine SELECT-Abfrage nach der Schreibweise <i>ritz</i> beide Treffer finden:
    <pre>
    SELECT * FROM Customers
    WHERE LastName = 'ritz'
    </pre>
    Um das Problem der automatischen Konvertierung durch den MS SQL Server zu umgehen, hilft eine Typumwandlung in ein VARBINARY-Ergebnis weiter:
    <pre>
    SELECT * FROM Customers
    WHERE CAST(LastName AS VARBINARY(10)) = CAST('ritz' AS VARBINARY(10))
    </pre>
    Ob dieser Umweg auch im Fall der Indexspalte sinnvoll ist, muss allderdings erst ein praktischer Test mit der Wirkdatenbank zeigen

    Comment


    • #3
      Hallo Andreas,

      dein Beispiel mit dem Problem mit nicht-Unterscheidung/Unterscheidung Groß-/Kleinschreibung hatten wir auch mal (bei der ersten Installation mit Unterscheidung Groß-/Kleinschreibung) , jedoch ist unsere Applikation mittlerweile dagegen immun (kommt damit zurecht).

      Eine Konvertierung auf ein anderes Format ist nicht möglich, da unsere DB nicht nur mit MS-SQL-Server sondern auch mit Oracle, MySQL und ADS läuft und wir keine Serverspezifischen Selects generieren wollen.

      Trotzdem Danke für den Tipp

      Comment

      Working...
      X