Использование регулярных выражений с SQL Server BIDS

Я пишу отчет, используя SQL Server BIDS (Business Intelligence Development Studio, VS2008), и у меня есть требование удалить пунктуацию из значений полей.

Например, если значение поля «Привет, мир!», я хочу, чтобы в отчете отображалось значение «Привет, мир». Я знаю, что в этом примере было бы достаточно просто использовать функцию замены, вложенную:

=Replace(Replace(Fields!Description.Value,",",""),"!","")

Но это быстро становится «уродливым», если мне нужно удалить больше, чем просто «,» и «!» персонажи. Итак, вкратце:

Можно ли использовать регулярные выражения для форматирования значений полей в отчете SQL Server BIDS?

Если ответ «нет», это нормально, это сэкономит мне время, пытаясь найти его! Спасибо.

ОБНОВЛЕНИЕ

Использование Regex в формуле выражения (хотя это для телефонных номеров):

=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")

person Alec    schedule 27.07.2011    source источник


Ответы (1)


Обработка большого набора строк на стороне клиента может занять некоторое время. Поэтому я предлагаю перенести логику Regex на серверную сторону.

Для этого вы можете использовать функцию CLR.

Посмотрите примеры здесь: http://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/

Обновить

Если вы хотите обрабатывать на стороне клиента, позвольте вам взглянуть на использование выражений (включая регулярное выражение) в отчетах: http://msdn.microsoft.com/en-us/library/ms157328(v=SQL.100).aspx

person Dalex    schedule 27.07.2011
comment
Хотя это звучит как хорошее предложение, в данном случае у меня недостаточно доступа к серверу для изменения предоставленных данных. Я использую оператор FetchXML для извлечения данных, любая обработка должна происходить в отчете (на стороне клиента). - person Alec; 27.07.2011