2011-07-27 3 views
0

Je rédige un rapport à l'aide de SQL Server BIDS (Business Intelligence Development Studio, VS2008) et j'ai l'obligation de supprimer la ponctuation des valeurs de champ. Par exemple, si la valeur du champ est "Hello, World!", Je souhaite que le rapport affiche la valeur "Hello World". Je suis au courant de cet exemple, il serait assez facile d'utiliser la fonction, remplacer imbriqué:Utilisation de Regex avec SQL Server BIDS

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

Mais devient rapidement « laid » si je dois retirer plus que juste « » et « ! » personnages. Donc, en bref:

Puis-je utiliser des expressions régulières pour mettre en forme des valeurs de champ dans un rapport SQL Server BIDS?

Si la réponse est "non", c'est bien, ça me fera économiser du temps à essayer de le trouver! Merci.

MISE À JOUR

Utilisation de Regex dans la formule d'expression (bien que celui-ci est pour les numéros de téléphone):

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

Répondre

1

Pour traiter un grand ensemble de lignes sur le côté client peut prendre un certain temps. Je propose donc de déplacer la logique Regex du côté serveur.

Vous pouvez utiliser la fonction CLR pour cela.

Rechercher des exemples ici: http://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/

Mise à jour

Si vous voulez traiter côté client, vous laisse regarder en utilisant des expressions (y compris regex) dans les rapports: http://msdn.microsoft.com/en-us/library/ms157328(v=SQL.100).aspx

+0

Bien que ce Cela ressemble à une bonne suggestion, dans ce cas, je n'ai pas suffisamment d'accès au serveur pour modifier les données fournies. J'utilise une instruction FetchXML pour récupérer les données, tout traitement doit se produire dans le rapport (côté client). – Alec

+0

C'est exactement ce que je recherchais! Merci beaucoup. – Alec

Questions connexes