Не мисля, че пълнотекстово търсене ще ви помогне. Изглежда, че търсите всеки фрагмент, дори като технически термини като /1/
.
Опитайте това за XML
DECLARE @SearchFor VARCHAR(100)='1';
SELECT *
FROM SettingsData
WHERE xmldata.exist(N'//*[contains(text()[1],sql:variable("@SearchFor"))]')=1;
Той ще провери вътрешния text()
на всеки възел ако съдържа фразата за търсене. Но всяка стойност с 1
вътре е намерено (напр. всяко несвързано число, което има 1
някъде.) Може да търсите text()="1"
и изпълнете contains
само ако дължината на низа надвишава определен минимум.
Нещо като
WHERE xmldata.exist(N'//*[text()[1]=sql:variable("@SearchFor") or(string-length(text()[1])>=3 and contains(text()[1],concat("/",sql:variable("@SearchFor"),"/")))]')=1;
Досега Json не е нищо повече от низ и трябва да бъде анализиран. С v2016 Microsoft въведе JSON поддръжка, но вие сте на v2012. Проблемът с LIKE
търсене на JSON-низ може да бъде, че ще намерите 1 дори като част от името на елемент. Останалото е както по-горе...
SELECT *
FROM SettingsData
WHERE jsondata LIKE '%' + @SearchFor + '%';