SQL-Count-String-Übereinstimmungen

Bitte schauen Sie sich diese einfache SQL server database an:

Datenbank

Ich möchte, dass das Ergebnis 3 Spalte hat und die Spalte "CountString" die Gesamtzahl der characterfolge ist, die übereinstimmt ('this', 'is', 'count', 'example'). Ich habe es geschafft, diese Wörter mit dieser Abfrage zu erkennen, aber es kann nicht mehrere Wörter erkennen:

SELECT productid, NAME, ((CASE WHEN Concat(' ', NAME, ' ') LIKE '% this %' THEN 1 ELSE 0 END) + (CASE WHEN Concat(' ', NAME, ' ') LIKE '% is %' THEN 1 ELSE 0 END) + (CASE WHEN Concat(' ', NAME, ' ') LIKE '% count %' THEN 1 ELSE 0 END) + (CASE WHEN Concat(' ', NAME, ' ') LIKE '% example %' THEN 1 ELSE 0 END)) AS CountString FROM product; 

Allerdings, wenn der Name für productID 1 ist "dies ist dieses Beispiel zählen". Ich möchte, dass es als 5 gezählt werden. Könnten Sie das lösen?

 Create Table product(productid int, NAME varchar(100)) Insert Into product Values(1,'this is this example') Insert Into product Values(2,'this is this this count this example') SELECT productid,count(*) as CountString FROM ( SELECT A.[productid], Split.a.value('.', 'VARCHAR(100)') AS String FROM (SELECT [productid], CAST ('<M>' + REPLACE([NAME], ' ', '</M><M>') + '</M>' AS XML) AS String FROM product) AS A CROSS APPLY String.nodes ('/M') AS Split(a) ) As Word WHERE String in ('this','is','count','example') Group by productid 

Versuche dies

 DECLARE @TableString TABLE(ID INT IDENTITY,String nvarchar(max)) INSERT INTO @TableString(String) SELECT 'this is count this example' UNION ALL SELECT 'Bearing Ball' UNION ALL SELECT 'BB Ball Bearing ' UNION ALL SELECT 'this is example' -- Here the delimeter is space SELECT id AS productid, COUNT(stringValue) AS StringValueCount FROM ( SELECT id , Split.a.value('.', 'VARCHAR(1000)') AS stringValue FROM ( SELECT id,CAST('<S>' + REPLACE(String, ' ', '</S><S>') + '</S>' AS XML) AS String FROM @TableString ) AS A CROSS APPLY String.nodes('/S') AS Split(a) )Dt WHERE dt.stringValue in ('this','is','count','example') GROUP BY id 

Ergebnis

 productid StringValueCount ----------------------------- 1 5 4 3