2 Stimmen

Zählen der Vorkommen einer Zeichenkette innerhalb des Datentyps TEXT in SQL Server 2005

Es gibt eine Spalte vom Datentyp TEXT in meiner Tabelle. Nun muss ich die Anzahl der Vorkommen einer Zeichenkette in diesem TEXT-Feld finden. Ich habe bereits einen Volltextindex für diese Tabelle erstellt. Aber ich weiß nicht, wie ich weiter vorgehen soll. Ich habe bereits Möglichkeiten gefunden, um das Auftreten von Zeichenketten für VARCHAR zu zählen. Aber sie können nicht AS IS auf das TEXT-Feld angewendet werden. Irgendwelche Vorschläge?

7voto

Denis Valeev Punkte 5885

Versuchen Sie dies:

 declare @searchString varchar(max);
 set @searchString = 'something';
 declare @textTable table (txt text);
 insert into @textTable ( txt )
 values  ( 'something that has something 2 times' )

 select 
 (
  datalength(txt) - 
  datalength(replace(cast(txt as varchar(max)), @searchString, ''))
 )
 /datalength(@searchString) [Count]

   from @textTable as tt

Beachten Sie, dass das Gießen als varchar(max) wird Ihre Daten nicht abschneiden. text Spalte, da die maximale Länge von varchar(max) 2^31-1 Bytes oder 2Gb beträgt.

1voto

Scott R. Frost Punkte 1955

So geht's gegen einen n-Text:

    CREATE FUNCTION fn_CountInNText 
    (
        @SearchString nvarchar,
        @NTextToSearch ntext
    )
    RETURNS int
    AS
    BEGIN
        RETURN 
        (
        datalength(@NTextToSearch) - 
        datalength(replace(cast(@NTextToSearch as nvarchar(max)), @SearchString, ''))
        )
        /datalength(@SearchString)/2 
    END
    GO

Dann wählen Sie es etwa so aus:

SELECT dbo.fn_CountInNText('Something',[TheNTextColumn]) AS [Count] 
FROM [TheTable]

0voto

anishMarokey Punkte 11011

Das Feld (Text) in varchar umwandeln und die Anzahl ermitteln

z.B.: convert(varchar(200),textColumn)

0 Stimmen

Die Größenbegrenzung für varchar beträgt 8000. Die in jeder Zeile gespeicherten Daten sind größer als das.

0voto

solkim Punkte 99

Beachten Sie, dass die Antwort von Denis Valeev nicht korrekt ist, wenn Sie ntext anstelle von text verwenden.

Text: Nicht-Unicode-Daten variabler Länge mit einer maximalen Länge von 2.147.483.647 Zeichen.

nText: Unmorddaten variabler Länge mit einer maximalen Länge von 1.073, 741, 823 Zeichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X