Ich habe eine FULLTEXT-Spalte namens 'name', die mehrere Wörter pro Zeile enthalten kann. Mit CONTAINS kann ich nach einer variablen Anzahl von Wörtern suchen, und es funktioniert, außer wenn eines der Wörter ein kaufmännisches Und enthält.MS SQL CONTAINS mit Ampersand Search
Beispiel: name = 'Bob Brown AB & CD' Dies funktioniert:
CONTAINS(name, '"*Bo*" AND "*Br*"')
Diese nicht (jede Suche nach dem Wort mit dem Ampersand):
CONTAINS(name, '"*AB*"')
CONTAINS(name,'"*AB&CD*"')
CONTAINS(name,'"*&*"')
Ich weiß, warum die letzte Suche würde nicht funktionieren, da CONTAINS nur von Anfang an sucht.
Wird das kaufmännische Und-Zeichen von FULLTEXT als Wortbruch verarbeitet? Wenn dies der Fall ist, könnte das erklären, warum eine Suche, die das kaufmännische Und-Zeichen enthält, fehlschlagen würde. Aber es würde nicht erklären warum
würde fehlschlagen.
Wie kann ich die Suche abschwächen, damit die Zeile zurückgegeben wird, wenn ich nach "AB & CD" oder einfach nur "AB" oder nur "CD" suche?
P.S. Dynamisches SQL ist keine Option, daher kann ich keine variable Anzahl von LIKEs verketten.