2016-02-04 5 views
0

Регулярное выражение Я хочу использовать это: ^(?=.*[,])(,?)ABC(,?)$Строка поиска с регулярным выражением SQL Server

То, что я хочу, чтобы выйти является:

^    // start 
(?=.*[,])  // contains at least one comma (,) 
(,?)ABC(,?)  // The comma is either in the beginning or in the end of the string "ABC" 
$    // end 

Конечно ABC это должно быть переменной на основе моих искать термин.

ABC = 'abc' Так что, если потом ",abc", "abc,", ",abc," будет соответствовать, но не "abc" или "abcd"

Лучший способ сделать это также приветствуется.

Значение в записи выглядит как "abc,def,ghi,ab,cde...", и мне нужно выяснить, содержит ли он мой элемент (т. Е. 'abc'). Я не могу изменить структуру данных. Мы можем предположить, что ни в коем случае запись не будет содержать только одно вспомогательное значение, поэтому правильно предположить, что в значении всегда есть запятая.

+0

Так вы хотите искать 'term' в строке, имеющей запятую разделенные термины? –

+0

Да в основном регулярное выражение говорит все. Он должен иметь одну запятую либо в начале, либо в конце, чтобы моя строка не была подстрокой другой строки, и она будет соответствовать, если это первая строка или последняя. – DDan

+0

как насчет разделения строки разделителем запятой, а затем поиск после разделения? – Angelo

ответ

2

Если вы хотите знать, если через запятую строка содержит abc, то я думаю like это самый простой способ в любой базе данных:

where ',' + col + ',' like '%,abc,%' 
+0

Это не будет соответствовать «' abc, def' » – DDan

+0

« abc »может быть первым или последним товаром – DDan

+0

@Ddan. , , Конечно, это будет. Вот почему запятые перед и после запятой перед «похожими». –

Смежные вопросы