it-swarm.com.de

Überprüfen Sie mithilfe einer gespeicherten Prozedur, ob eine Zeichenfolge eine Teilzeichenfolge in SQL Server 2005 enthält

Ich habe eine Zeichenfolge, @mainString = 'CATCH ME IF YOU CAN'. Ich möchte überprüfen, ob das Wort ME in @mainString enthalten ist.

Wie überprüfe ich, ob eine Zeichenfolge eine bestimmte Teilzeichenfolge in SQL hat?

229
NLV

CHARINDEX () sucht nach einer Teilzeichenfolge in einer größeren Zeichenfolge und gibt die Position der Übereinstimmung oder 0 zurück, wenn keine Übereinstimmung gefunden wird

if CHARINDEX('ME',@mainString) > 0
begin
    --do something
end

Bearbeiten oder von Daniels Antwort, wenn Sie ein Wort (und keine Unterkomponenten von Wörtern) suchen möchten, würde Ihr CHARINDEX-Aufruf folgendermaßen aussehen:

CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')

(Fügen Sie mehr rekursive REPLACE () - Aufrufe hinzu, wenn eine andere Interpunktion auftreten kann

377

Sie können nur Platzhalter im Prädikat verwenden (nach IF, WHERE oder ON):

@mainstring LIKE '%' + @substring + '%'

oder in diesem speziellen Fall

' ' + @mainstring + ' ' LIKE '% ME[., ]%'

(Fügen Sie die Leerzeichen in die angeführte Zeichenfolge ein, wenn Sie das ganze Wort suchen, oder lassen Sie sie weg, wenn ME Teil eines größeren Wortes sein kann.).

115
Daniel Quinlan
DECLARE @str VARCHAR(255)
SET @str = 'this is @n $tring'

IF (@str LIKE '%[^a-zA-Z0-9]%')
    PRINT 'have some ''special'' characters'
ELSE
    PRINT 'have not ''special'' characters'

möge dies dir helfen.

3
Hardik