Frage

Um Groß- und Kleinschreibung Suchen / Ersetzen auf einer Tabelle in einer SQL Server 2000/2005 Datenbank auszuführen, müssen Sie die richtige Sortierung verwenden.

Wie bestimmen Sie, ob die Standardsortierung für eine Datenbank case-sensitive ist, und wenn dies nicht der Fall, wie Groß- und Kleinschreibung Suchen / Ersetzen durchführen?

War es hilfreich?

Lösung

SELECT testColumn FROM testTable  
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'example' 

SELECT testColumn FROM testTable
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'EXAMPLE' 

SELECT testColumn FROM testTable 
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'eXaMpLe' 

Sie die Standardsortierung nicht davon ausgehen, Groß- und Kleinschreibung sein, geben Sie nur einen Fall heikel jedes Mal (die richtigen für Ihre Sprache natürlich mit)

Andere Tipps

Sie fest, ob die Standardsortierung wird die Groß- wie folgt aus:

select charindex('RESULT', 'If the result is 0 you are in a case-sensitive collation mode')

Ein Ergebnis von 0 bedeutet, dass Sie in Groß- und Kleinschreibung Sortierungsmodus sind, 8 gibt es Groß- und Kleinschreibung.

Wenn der Vergleich Groß- und Kleinschreibung ist, müssen Sie explizit den Sortiermodus, den Sie verwenden möchten, erklären, wenn eine Suche durchführen / ersetzen.

Hier ist, wie eine Update-Anweisung zu konstruieren, Groß- und Kleinschreibung durchführen zu suchen / ersetzen, indem Sie den Sortierungsmodus Angabe zu verwenden:

update ContentTable
set ContentValue = replace(ContentValue COLLATE Latin1_General_BIN, 'THECONTENT', 'TheContent')
from StringResource
where charindex('THECONTENT', ContentValue COLLATE Latin1_General_BIN) > 0

Dies wird passen und ersetzen 'THECONTENT', aber 'TheContent' oder 'thecontent' nicht.

Wenn Sie verschiedene Fälle des gleichen Wortes im gleichen Feld , und wollen nur ersetzen spezifische Fälle , dann können Sie verwenden in Ihrem Betrieb REPLACE Funktion:

UPDATE tableName
SET fieldName = 
    REPLACE(
        REPLACE(
            fieldName COLLATE Latin1_General_CS_AS,
            'camelCase' COLLATE Latin1_General_CS_AS,
            'changedWord'
        ),
        'CamelCase' COLLATE Latin1_General_CS_AS,
        'ChangedWord'
    )

Dies führt zu:

This is camelCase 1 and this is CamelCase 2

immer:

This is changedWord 1 and this is ChangedWord 2

Kann in mehreren Anweisungen durchgeführt werden. Die nicht Arbeit, wenn Sie lange Strings haben, die enthalten sowohl ein Kleines Wort aktivierten Sie ersetzen wollen. Sie könnten auch andere Sortierung ist das Akzent und Groß- und Kleinschreibung.

verwenden müssen
UPDATE T SET [String] = ReplacedString
FROM [dbo].[TranslationText] T, 
    (SELECT [LanguageCode]
      ,[StringNo]
      ,REPLACE([String], 'Favourite','Favorite') ReplacedString
    FROM [dbo].[TranslationText]
    WHERE 
    [String] COLLATE Latin1_General_CS_AS like '%Favourite%'
    AND [LanguageCode] = 'en-us') US_STRINGS
WHERE 
T.[LanguageCode] = US_STRINGS.[LanguageCode] 
AND T.[StringNo] = US_STRINGS.[StringNo]

UPDATE T SET [String] = ReplacedString
FROM [dbo].[TranslationText] T, 
    (SELECT [LanguageCode]
      ,[StringNo]
      , REPLACE([String], 'favourite','favorite') ReplacedString 
    FROM [dbo].[TranslationText]
    WHERE 
    [String] COLLATE Latin1_General_CS_AS like '%favourite%'
    AND [LanguageCode] = 'en-us') US_STRINGS
WHERE 
T.[LanguageCode] = US_STRINGS.[LanguageCode] 
AND T.[StringNo] = US_STRINGS.[StringNo]

Zu allererst überprüfen diese: http://technet.microsoft.com/en-us /library/ms180175(SQL.90).aspx

Sie werden sehen, dass CI gibt Groß- und Kleinschreibung und CS gibt Groß- und.

Auch könnte dies sehr nützlich sein. select * from fn_helpcollations () - das erhält alle Sortierungen der Server unterstützt. select * from sys.databases -. Hier gibt es eine Spalte, die angibt, welche Sortierungs jede Datenbank auf dem Server hat

Sie können entweder den Sortierungs jedes Mal, wenn Sie die Tabelle abfragen oder Sie können durch Änderung der Tabelle die Sortierung in die Spalte (n) dauerhaft gelten.

Wenn Sie wählen die Abfragemethode tun, um seine vorteilhaft, die Groß- und Kleinschreibung Suchargumente als auch aufzunehmen. Sie werden sehen, dass SQL einen effizienteren exec Plan wählen, ob Sie sie schließen. Zum Beispiel:

SELECT testColumn FROM testTable 
    WHERE testColumn COLLATE Latin1_General_CS_AS = 'eXaMpLe' 
    and testColumn = 'eXaMpLe'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top