Sie müssten die Zeichenfolge aufteilen und nach jedem Wort in der Zeichenfolge suchen. SQL Server hat dafür keine native Funktion, aber es gibt verschiedene Beispiele im Web.
Diese Funktion nimmt eine Zeichenfolge und ein Trennzeichen und teilt die Zeichenfolge durch das Trennzeichen auf und gibt eine Tabelle der resultierenden Werte zurück.
CREATE FUNCTION dbo.SplitVarchar (@stringToSplit varchar(4000), @delimiter CHAR(1))
RETURNS @Result TABLE(Value VARCHAR(50))AS
BEGIN
--This CTE will return a table of (INT, INT) that signify the startIndex and stopIndex
--of each string between delimiters.
WITH SplitCTE(startIndex, stopIndex) AS
(
SELECT 1, CHARINDEX(@delimiter, @stringToSplit) --The bounds of the first word
UNION ALL
SELECT stopIndex + 1, CHARINDEX(@delimiter, @stringToSplit, stopIndex+1)
FROM SplitCTE --Recursively call SplitCTE, getting each successive value
WHERE stopIndex > 0
)
INSERT INTO @Result
SELECT
SUBSTRING(@stringToSplit, --String with the delimited data
startIndex, --startIndex of a particular word in the string
CASE WHEN stopIndex > 0 THEN stopIndex-startIndex --Length of the word
ELSE 4000 END --Just in case the delimiter was missing from the string
) AS stringValue
FROM SplitCTE
RETURN
END;
Sobald Sie Ihre getrennte Zeichenfolge in eine Tabelle drehen, können Sie es mit der Tabelle JOIN Sie möchten Werte, die Art und Weise suchen und zu vergleichen.
DECLARE @TeamName VARCHAR(50)= 'Chelsea FC'
SELECT DISTINCT Name
FROM Team
INNER JOIN (SELECT Value FROM dbo.SplitVarchar(@TeamName, ' ')) t
ON CHARINDEX(t.Value, Name) > 0
Ergebnisse:
| Name |
|---------|
| Chelsea |
SQL Fiddle example
basierend ich mein Design auf Amit Jethva des Convert Comma Separated String to Table : 4 different approaches
Das ist beeindruckend – potashin
Danke, ich hatte eine Writeup für eine ähnliche Frage gemacht, die (wegen der schlecht formuliert) geschlossen wurde, bevor ich antworten konnte. Zum Glück habe ich meine Arbeit gerettet. :) –
Dies ist Overkill-Lösung. –