2013-04-24 3 views
3

Я хочу найти шаблон строки в таблице базы данных.Поиск с использованием Regex в Entity Framework

Шаблон поиска - это просто строка, введенная пользователем. Однако в поле поиска могут быть пробелы между ними, или пользователь может вводить пробелы в строке.

Так что я хочу, чтобы создать регулярное выражение, так что, если сказать, что строка «Test», я смотрю на регулярное выражение, которое может иметь пробелы между ними, что-то вроде этого

T[\s]*e[\s]*s[\s]*t. 

Может кто-нибудь предложить, пожалуйста, как Я могу сделать это в рамках Entity - или с помощью ESQL?

+0

Пространства - единственная причина, по которой вам нужно использовать регулярное выражение? Вы можете удалить все пробелы из поля и критерии поиска, а затем сравнить их. – ckal

+0

Я не могу удалить пробелы из поля в базе данных - потому что пользователь вводит его - и требование - сохранить его как есть. – gunnerz

ответ

2

Для этого шаблона вам не нужно Regex. Вы лучше всего обрезаете их, затем выполните поиск. Вы могли бы что-то вроде:

SELECT * FROM MyTable 
WHERE REPLACE(MyColumn, ' ', '') LIKE '%' + REPLACE(@YourVariable, ' ', '') + '%' 
+0

Это разрешает только половину проблемы. Он найдет запись в базе данных, если в ней нет пробелов. Однако пользователь может ввести запись с пробелами - и он может поместить пробел после любого символа. Этот поиск не будет работать. То почему regex необходимо. – gunnerz

+0

@gunnerz Тогда мы также можем взять пробелы из столбца, так что оба они равны. Проверьте мое обновленное редактирование. Я добавил обрезку для обоих. – mattytommo

+0

Спасибо, что работает! Я не уверен, насколько эффективен поиск. Также я предполагаю, что единственный способ использовать его в инфраструктуре сущности - через ESQL. – gunnerz