Итак, вы ищете значение (из строки запроса) в столбце с разделителями пробелов в базе данных? И вы используете Split
для запроса отдельных значений внутри базы данных?
(просто проверяя мои предположения ...)
string.Split
не поддерживается таким образом ( в базе данных по данным столбца) - см. здесь поддерживаемые строковые операции . (обратите внимание, что string.Split
явно явно не поддерживается).
Я ленив; когда я делит данные в базе данных (относительно редко), я всегда добавляю один и тот же разделитель к началу и концу данных; то я могу просто искать:
string searchFor = DELIMITER + searchValue + DELIMITER;
...
.Where(row => row.Value.Contains(searchFor));
Однако; в этом случае я ожидаю, что наиболее практичным вариантом может быть запись функции UDF, которая выполняет поиск в разделителе varchar
(правильно обрабатывает первый / последний элемент) и выставляет UDF в контексте данных - затем используйте:
.Where(row => ctx.ContainsValue(row.Value, searchValue)); // ContainsValue is our UDF
Или - нормализовать данные ...
.Where(row => row.Values.Any(s=>s.Value == searchValue));
Я использовал бы группы получения в regex:
$ string="hello-world"
$ prefix="hell"
$ suffix="ld"
$ set +H # Disables history substitution, can be omitted in scripts.
$ perl -pe "s/${prefix}((?:(?!(${suffix})).)*)${suffix}/\1/" <<< $string
o-wor
$ string1=$string$string
$ perl -pe "s/${prefix}((?:(?!(${suffix})).)*)${suffix}/\1/g" <<< $string1
o-woro-wor
((?:(?!(${suffix})).)*)
удостоверяется, что содержание ${suffix}
будет исключено из группы получения. С точки зрения примера это - строка, эквивалентная [^A-Z]*
. Иначе Вы доберетесь:
$ perl -pe "s/${prefix}(.*)${suffix}/\1/g" <<< $string1
o-worldhello-wor