tag:blogger.com,1999:blog-84287160050446068222024-03-21T03:45:55.118-05:00the xmlsqlninjaA blog about data and stuffAlan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.comBlogger31125tag:blogger.com,1999:blog-8428716005044606822.post-6133646545944595982013-12-10T09:58:00.000-06:002013-12-10T10:04:47.376-06:00These 5 Tech Jobs Will See the Most Growth in 2014<div class="rpuEmbedCode">
<div class="rpuArticle rpuRepost-310c63b879b66277878a4d50a133b828-top" style="margin:0;padding:0;">
<script src="https://1.rp-api.com/rjs/repost-article.js?3" type="text/javascript" data-cfasync="false"></script><a href="http://s.tt/1SosV" class="rpuThumb" rel="norewrite"><img src="//img.1.rp-api.com/thumb/8923219" style="float:left;margin-right:10px;" /></a><a href="http://s.tt/1SosV" class="rpuTitle" rel="norewrite"><strong>These 5 Tech Jobs Will See the Most Growth in 2014</strong></a> (via <a href="http://s.tt/1SosV" class="rpuHost" rel="norewrite">Dice News in Tech</a>)<p class="rpuSnip">
Mobile app developers top the list of Robert Half Technology’s top growth tech jobs for 2014. Given the high demand for mobile-dev skills and the difficulty finding people who have them, that’s no surprise. RHT compiles this list based on increases…
</p>
</div>
</div><!-- put the "tease", "jump" or "more" break here -->
<div class="rpuEmbedCode">
<div class="rpuArticle rpuRepostMain rpuRepost-310c63b879b66277878a4d50a133b828-bottom" style="display:none;"> </div>
<div style="display: none;"><!-- How to customize this embed: http://www.repost.us/article-preview/hash/0f2d1101979c6300d5b52c2ecd8e9808 --></div>
</div>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0Chicago, IL, USA41.8781136 -87.62979819999998241.4995241 -88.275245199999986 42.256703099999996 -86.984351199999978tag:blogger.com,1999:blog-8428716005044606822.post-8197100248029060982013-12-07T22:39:00.000-06:002013-12-10T10:01:00.407-06:00 Hottest Job in the Market: Software Developer
<div class="rpuEmbedCode">
<div class="rpuArticle rpuRepost-54b5776fbc8abb68e8a58bd1c980e1f2-top" style="margin:0;padding:0;">
<script src="https://1.rp-api.com/rjs/repost-article.js?3" type="text/javascript" data-cfasync="false"></script><a href="http://s.tt/1SamC" class="rpuThumb" rel="norewrite"><img src="//img.1.rp-api.com/thumb/8868896" style="float:left;margin-right:10px;" /></a>
<!-- <a href="http://s.tt/1SamC" class="rpuTitle" rel="norewrite"><strong>Hottest Job in the Market: Software Developer</strong></a> -->
(via <a href="http://s.tt/1SamC" class="rpuHost" rel="norewrite">Dice News in Tech</a>)<p class="rpuSnip">
Software development is the most in-demand skill for technology jobs in the U.S., according to a study by Wanted Analytics. More than 232,000 jobs for software developers have been advertised online in the past 90 days, an increase of 3 percent over…
</p>
</div>
</div><!-- put the "tease", "jump" or "more" break here --><hr id="system-readmore" style="display: none;" /><a name='more'></a><!--break--><hr class="at-page-break" style="display: none;"/><div class="rpuEmbedCode">
<div class="rpuArticle rpuRepostMain rpuRepost-54b5776fbc8abb68e8a58bd1c980e1f2-bottom" style="display:none;"> </div>
<div style="display: none;"><!-- How to customize this embed: http://www.repost.us/article-preview/hash/8b15e2d57fa575578a24c94a49dba981 --></div>
</div>
Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0Chicago, IL, USA41.8781136 -87.62979819999998241.4995241 -88.275245199999986 42.256703099999996 -86.984351199999978tag:blogger.com,1999:blog-8428716005044606822.post-282877824161501852013-10-23T13:21:00.001-05:002013-12-08T00:24:37.121-06:00Software, Data Skills Key to Higher Pay<div class="rpuEmbedCode">
<div class="rpuArticle rpuRepost-0834d7e620913ca1e01ec9acf663aaea-top" style="margin:0;padding:0;">
<script src="https://1.rp-api.com/rjs/repost-article.js?3" type="text/javascript" data-cfasync="false"></script><a href="http://s.tt/1O4iC" class="rpuThumb" rel="norewrite"><img src="//img.1.rp-api.com/thumb/7884696" style="float:left;margin-right:10px;" /></a><a href="http://s.tt/1O4iC" class="rpuTitle" rel="norewrite"><strong>Software, Data Skills Key to Higher Pay</strong></a> (via <a href="http://s.tt/1O4iC" class="rpuHost" rel="norewrite">Dice News in Tech</a>)<p class="rpuSnip">
Though few are on par with Twitter’s $10 million engineer, pay is on the upswing for IT occupations, according to a new Robert Half Technology salary survey. The report suggests that while salaries will rise an average of 3.7 percent in 2014 across…
</p>
</div>
</div><!-- put the "tease", "jump" or "more" break here --><hr id="system-readmore" style="display: none;" /><a name='more'></a><!--break--><hr class="at-page-break" style="display: none;"/><div class="rpuEmbedCode">
<div class="rpuArticle rpuRepostMain rpuRepost-0834d7e620913ca1e01ec9acf663aaea-bottom" style="display:none;"> </div>
<div style="display: none;"><!-- How to customize this embed: http://www.repost.us/article-preview/hash/b20deda236f42963e564aff0bd5e1903 --></div>
</div>
Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-62970256867008301052013-09-12T20:33:00.001-05:002013-12-08T00:30:07.828-06:00mdq.regex CLR Functions -- Part 3: Regex Check Constraints!<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2 {font-size: 14pt;}
</style>
<br/>
<h2>Intro</h2>
<p>
This is the third article in my series, <a href="http://xmlsqlninja.blogspot.com/search/label/mdq.regex%20functions">mdq.regex CLR Functions</a>.
In my first two articles we reviewed <a href="http://xmlsqlninja.blogspot.com/2013/04/regex-in-sql-server-1-mdqregexismatch.html">mdq.RegexIsMatch</a>
and <a href="http://xmlsqlninja.blogspot.com/2013/05/mdqregex-clr-functions-part-2.html">mdq.RegexMatches</a>. In each article I demonstrated
how to use these CLR functions to pass regular expressions (regex for short) to your T-SQL queries. Today I will show you how to create a couple tables with check constraints that use regex to evaluate input using mdq.RegexIsMatch.
</p>
<br/>
<h2>Setup</h2>
<p>
Setting up mdq.RegexIsMatch is extremely quick and simple provided you have the right credentials.
See <a href="http://xmlsqlninja.blogspot.com/2013/04/regex-in-sql-server-1-mdqregexismatch.html" taget="_blank">this article</a> for detailed instructions on how to setup mdq.RegexIsMatch.
</p>
<br/>
<h2>Sample Regex Check Constraints</h2>
<p>
Creating check constraints to test for tricky string patterns such as a valid IP Address or E-mail address can be a headache using T-SQL.
Luckily, regex is perfect for this sort of task; below are two examples. In the first example we create a table with a column that only accepts
valid E-mail addresses, the second only accepts valid IP addresses. This is easiest to learn by example so let's get to it...
</p>
<p style="margin-bottom: 5px; margin-top: 20px; font-weight: bold;">Valid E-mail Address</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:9.0pt;
font-family:"Calibri","sans-serif";}
.MsoPapDefault
{margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1; border: solid grey 1px; padding: 10px; height: 150px;overflow:auto; background-color: #D8D8D8; width: 560px;}
div.WordSection2
{page:WordSection2; border: solid grey 1px; padding: 10px; height: 150px;overflow:auto; background-color: #D8D8D8; width: 560px;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div class=WordSection1>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>CREATE</span><span style='font-size:
9.5pt;font-family:Consolas'> <span style='color:blue'>TABLE</span> <span
style='color:teal'>Customers</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:gray'>(<span style='mso-tab-count:1'> </span></span><span
class=SpellE><span class=GramE><span style='font-size:9.5pt;font-family:Consolas;
color:teal'>cust_name</span></span></span><span style='font-size:9.5pt;
font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>100<span style='color:gray'>),</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>cust_email</span></span></span><span
style='mso-tab-count:1'> </span><span class=SpellE><span style='color:blue'>nvarchar</span></span><span
style='color:gray'>(</span>200<span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:blue'>CHECK </span><span style='color:gray'>(</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>[<span
class=SpellE>Cust_Email</span>]</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
style='color:red'>'<span class=GramE>^(</span>([a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]<span
class=GramE>+(</span>\.[a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]+)*<span
class=GramE>){</span>1,64}@(([A-Za-z0-9]+[A-Za-z0-9-_]*){1,63}\.)*(([A-Za-z0-9<span
class=GramE>]+</span>[A-Za-z0-9-_]*){3,63}\.)<span class=GramE>+(</span>[A-Za-z0-9]{2,4}\.?)<span
class=GramE>+){</span>1,255}$'</span><span style='color:gray'>,</span>0<span
style='color:gray'>)=</span>1</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
style='mso-spacerun:yes'> </span><span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:gray'>);</span></p>
</div>
<p style="margin-bottom: 5px; margin-top: 20px; font-weight: bold;">Valid IP Address (no leading zeros)</p>
<div class=WordSection1>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>CREATE</span><span style='font-size:
9.5pt;font-family:Consolas'> <span style='color:blue'>TABLE</span> <span
style='color:teal'>Computers</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:gray'>(</span><span style='font-size:9.5pt;
font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>computer_name</span></span></span>
<span class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>100<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>ip_address</span></span></span>
<span class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>20<span style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:blue'>CHECK </span><span style='color:gray'>(</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>[<span
class=SpellE>ip_address</span>]</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
style='color:red'>'^(?:(?<span class=GramE>:25</span>[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(<span
class=GramE>?:</span>25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$'</span><span
class=GramE><span style='color:gray'>,</span>0</span><span style='color:gray'>)=</span>1<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
style='mso-spacerun:yes'> </span><span style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:gray'>);<o:p></o:p></span></p>
<br/>
</div>
<br/><br/>
<h2>Conclusion</h2>
<p>As you can see, these mdq.regex functions add a whole new world of possibilities to your SQL Server instance. Thanks for reading!</p>
<br/>
<p><b><i>--ab</i></b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 9/12/2013 (Posted)</p>
Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com2tag:blogger.com,1999:blog-8428716005044606822.post-63413147767149894222013-05-28T15:35:00.001-05:002013-12-08T09:53:50.288-06:00mdq.regex CLR Functions -- Part 2: mdq.RegexMatches<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2 {font-size: 14pt;}
</style>
<br/>
<h2>
<i>Updated 12/7/2013</i>
</h2>
<p>
I updated this article on 12/7/2013 to include a link to instructions for enabling CLR Integration as and an updated link for the instructions to create the [Microsoft.MasterDataServices.DataQuality] assembly.
</p>
<br/>
<h2>Intro</h2>
<p>
This is the second article in my series, <b><a href="http://xmlsqlninja.blogspot.com/search/label/mdq.regex%20functions">mdq.regex CLR Functions.</a></b> In my previous article about mdq.regex functions, <a href="http://xmlsqlninja.blogspot.com/2013/04/regex-in-sql-server-1-mdqregexismatch.html"><i>mdq.regex CLR Functions -- Part 1</i></a> I introduced <b>mdq.RegexIsMatch</b>, a scalar CLR function that returns a bit based on if a regex pattern is matched. Today we will review <b>mdq.RegexMatches</b>.
</p>
<p>
mdq.RegexMatches is a <a href="http://msdn.microsoft.com/en-us/library/ms191165(v=sql.105).aspx">Table Valued CLR function</a>. Like mdq.RegexIsMatch, setup is fast, easy and this CLR was developed, tested, tuned and QA’d by Microsoft.
<br/><br/>
<h2>Setup</h2>
<p>To create this function you will need:</p>
<ol>
<li>A schema named, “mdq” in your target DB</li>
<li>CLR integration enabled</li>
<li>The [Microsoft.MasterDataServices.DataQuality] assembly</li>
</ol>
<p>
See <a href="http://technet.microsoft.com/en-us/library/ms131048(v=sql.100).aspx" style="color: #0040FF">this article</a> for details on enabling CLR integration and <a href="http://xmlsqlninja.blogspot.com/p/code-to-create-microsoftmasterdataservi.html" style="color: #0040FF">this article</a> for the steps to create the assembly.
</p>
<br/>
<p>Run the following DDL to create mdq.RegexMatches:</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:9.0pt;
font-family:"Calibri","sans-serif";}
.MsoPapDefault
{margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1; border: solid grey 1px; padding: 10px; height: 150px;overflow:auto; background-color: #D8D8D8; width: 560px;}
div.WordSection2
{page:WordSection2; border: solid grey 1px; padding: 10px; height: 150px;overflow:auto; background-color: #D8D8D8; width: 560px;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div class="WordSection1">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:blue'>CREATE</span><span style='font-size:8pt;font-family:Consolas'> <span
style='color:blue'>FUNCTION</span> <span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>[RegexMatches]</span><span
style='color:gray'>(</span><span style='color:teal'>@input</span> <span
style='color:teal'>[nvarchar]</span><span style='color:gray'>(</span>4000<span
style='color:gray'>),</span> <span style='color:teal'>@pattern</span> <span
style='color:teal'>[nvarchar]</span><span style='color:gray'>(</span>4000<span
style='color:gray'>),</span> <span style='color:teal'>@mask</span> <span
style='color:teal'>[tinyint]</span> <span style='color:gray'>=</span> 0<span
style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:blue'>RETURNS</span><span style='font-size:8pt;font-family:Consolas'> <span
style='color:blue'>TABLE </span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:gray'>(</span><span style='font-size:8pt;font-family:Consolas'> <span
style='color:teal'>[Sequence]</span> <span style='color:teal'>[int]</span> <span
style='color:gray'>NULL,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas'> <span
style='color:teal'>[Token]</span> <span style='color:teal'>[nvarchar]</span><span
style='color:gray'>(</span>4000<span style='color:gray'>)</span> <span
style='color:gray'>NULL)</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:blue'>WITH</span><span style='font-size:8pt;font-family:Consolas'> <span
style='color:blue'>EXECUTE</span> <span style='color:blue'>AS</span> <span
style='color:blue'>CALLER</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:blue'>AS</span><span style='font-size:8pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:blue'>EXTERNAL</span><span style='font-size:8pt;font-family:Consolas'> <span
style='color:teal'>NAME</span> <span style='color:teal'>[Microsoft.MasterDataServices.DataQuality]</span><span
style='color:gray'>.</span><span style='color:teal'>[Microsoft.MasterDataServices.DataQuality.SqlClr]</span><span
style='color:gray'>.</span><span style='color:teal'>[RegexMatches]</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8pt;font-family:Consolas;
color:blue'>GO</span></p>
</div>
<br/><br/>
<h2>Using mdq.RegexMatches</h2>
<p>
mdq.RegexMatches searches an input string for all occurrences of a regular expression and returns all the successful matches. This function uses the regular expression functionality of the Matches method in the Microsoft .NET Framework.
</p>
<br/>
<h2>Syntax</h2>
<p style="margin-left: 15px; font-family: Consolas; font-size: 8pt;">mdq.RegexMatches (input,pattern,mask)</p>
<br/>
<h2>Arguments</h2>
<span style="font-size: 8pt;">
<p style="margin-bottom:0px;"><i>input</i></p>
<p style="margin-top:0px; margin-left:20px;">
Is the input string for which to find matches. input is nvarchar(4000) with no default.
</p>
<p style="margin-bottom:0px;"><i>pattern</i></p>
<p style="margin-top:0px; margin-left:20px;">Is the regular expression pattern to use for matching. pattern is nvarchar(4000) with no default.</p>
<p style="margin-bottom:0px;"><i>mask</i></p>
<p style="margin-top:0px; margin-left:20px;">
Is the RegexOptions mask that specifies the behavior of the regular expression. For more information, see <a href="http://msdn.microsoft.com/en-us/library/ee633879(v=sql.105).aspx">mdq.RegexMask (Transact-SQL)</a>.
</p>
</span>
<br/>
<h2>mdq.RegexMatches Code Samples</h2>
<p>
In the first example below I am searching for numeric patterns. For the second example I will demonstrate how to search for records based on a word pattern. We will conclude with a technique for querying a table for valid and invalid EMail addresses.
</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection2
{page:WordSection2; border: solid grey 1px; padding: 10px; height: 200px;overflow:auto; background-color: #D8D8D8;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<p style="margin-bottom: 0px; font-weight: bold;">mdq.regexMatches to find numeric patterns</p>
<div class=WordSection2>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:green'>-- (1) <span class=GramE>Let's</span> find this pattern: (one or
more numbers)-(one or more numbers)-(one or more numbers) [e.g. 222-111-9999]</span><span
style='font-size:8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span style='color:teal'>Token</span>
<span style='color:blue'>AS</span> <span style='color:teal'>pattern</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span class=SpellE><span
class=GramE><span style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:red'>N'XYXYXYXYYX11-222-333XYXYXYXYXY'</span><span
style='color:gray'>,</span> <span style='color:red'>N'\d+-\d+-\d+'</span><span
style='color:gray'>,</span> 0<span style='color:gray'>);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>GO</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:green'>-- (2) Let's find patterns of one or more numbers</span><span
style='font-size:8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>DECLARE</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span style='color:teal'>@text</span>
<span class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>1000<span style='color:
gray'>)=</span><span style='color:red'>'1 is one, 2 is two and 3 makes three'</span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><span
style='mso-tab-count:1'> </span><span style='color:teal'>@<span
class=SpellE>find_cons_digits</span></span> <span class=SpellE><span
class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'\d+'</span><span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span style='color:teal'>Sequence</span><span
style='color:gray'>,</span> <span style='color:teal'>Token</span> <span
style='color:blue'>AS</span> <span style='color:teal'>value</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span class=SpellE><span
class=GramE><span style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:teal'>@text</span><span
style='color:gray'>,</span> <span style='color:teal'>@<span class=SpellE>find_cons_digits</span></span><span
style='color:gray'>,</span> 0<span style='color:gray'>);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>GO</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:green'>-- (3) Let's find <span class=SpellE>sequenses</span> of two
consecutive numbers</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>DECLARE</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span style='color:teal'>@text</span>
<span class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>1000<span style='color:
gray'>)=</span><span style='color:red'>'1 is one, 2 is two and 3 makes three'</span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><span
style='mso-tab-count:1'> </span><span style='color:teal'>@<span
class=SpellE>find_cons_digits</span></span> <span class=SpellE><span
class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'\d+'</span><span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@text</span><span style='color:gray'>=</span><span
style='color:red'>'1 is zero, 11 is one, 22 is two... 345678 makes three, four
and five'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><span
style='mso-tab-count:1'> </span><span style='color:teal'>@<span
class=SpellE>find_cons_digits</span></span><span style='color:gray'>=</span><span
style='color:red'>'\<span class=GramE>d{</span>2}'</span><span
style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman"'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span style='color:teal'>Sequence</span><span
style='color:gray'>,</span> <span style='color:teal'>Token</span> <span
style='color:blue'>AS</span> <span style='color:teal'>value</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas;
mso-fareast-font-family:"Times New Roman"'> <span class=SpellE><span
class=GramE><span style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:teal'>@text</span><span
style='color:gray'>,</span> <span style='color:teal'>@<span class=SpellE>find_cons_digits</span></span><span
style='color:gray'>,</span> 0<span style='color:gray'>);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;mso-fareast-font-family:"Times New Roman";
color:blue'>GO</span></p>
</div>
<br/>
<p style="margin-bottom: 0px; font-weight: bold;">mdq.regexMatches to find word patterns</p>
<div class=WordSection2>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-- (4) Let's perform a word count</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>DECLARE</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@quote</span> <span style='color:blue'>varchar</span><span
style='color:gray'>(</span>1000<span style='color:gray'>)=</span><span
style='color:red'>'The world is a dangerous place to live; not because of the
people who are evil, </span></span><span style='font-size:8.0pt;font-family:Consolas;
color:red'> but because of the people who dont do anything about it. --Albert Einstein'</span><span style='font-size:8.0pt; font-family:Consolas;color:gray'>,</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@quote2</span> <span style='color:blue'>varchar</span><span
style='color:gray'>(</span>100<span style='color:gray'>)=</span><span
style='color:red'>'apple orange orange pear'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@word_count</span> <span style='color:blue'>varchar</span><span
style='color:gray'>(</span>20<span style='color:gray'>)=</span><span
style='color:red'>'\b(\w+)'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@ab_count</span> <span style='color:blue'>varchar</span><span
style='color:gray'>(</span>20<span style='color:gray'>)=</span><span
style='color:red'>'\b([ab]\S+)'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@find_duplicates</span> <span style='color:blue'>varchar</span><span
style='color:gray'>(</span>50<span style='color:gray'>)=</span><span
style='color:red'>'\b(\w+?)\s\1\b'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:fuchsia'>COUNT</span><span style='color:gray'>(*)</span> <span
style='color:blue'>AS</span> <span style='color:teal'>[word count]</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span><span style='color:gray'>(</span><span
style='color:teal'>@quote</span><span style='color:gray'>,</span><span
style='color:teal'>@word_count</span><span style='color:gray'>,</span>0<span
style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-------------------------------------------------------</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-- (5) Let's find how many words begin with A or B</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:fuchsia'>COUNT</span><span style='color:gray'>(*)</span> <span
style='color:blue'>AS</span> <span style='color:teal'>[words that begin with A
or B]</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span><span style='color:gray'>(</span><span
style='color:teal'>@quote</span><span style='color:gray'>,</span> <span
style='color:teal'>@ab_count</span><span style='color:gray'>,</span>0<span
style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-- (6) Let's find repeated words</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@quote2</span> <span style='color:blue'>AS</span> <span
style='color:teal'>quote</span><span style='color:gray'>,</span> <span
style='color:teal'>Token</span> <span style='color:blue'>AS</span> <span
style='color:teal'>[repeated words]</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span><span style='color:gray'>(</span><span
style='color:teal'>@quote2</span><span style='color:gray'>,</span><span
style='color:teal'>@find_duplicates</span><span style='color:gray'>,</span>0<span
style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-- (7) Let's normalize a string, a series of numbers or both:</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>Sequence</span><span style='color:gray'>,</span> <span
style='color:teal'>Token</span> <span style='color:blue'>AS</span> <span
style='color:teal'>val</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span><span style='color:gray'>(</span><span
style='color:red'>N'NormalizeMe'</span><span style='color:gray'>,</span> <span
style='color:red'>N'([a-zA-z])'</span><span style='color:gray'>,</span> <span
style='color:red'>''</span><span style='color:gray'>); </span><span
style='color:green'>--string</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>Sequence</span><span style='color:gray'>,</span> <span
style='color:teal'>Token</span> <span style='color:blue'>AS</span> <span
style='color:teal'>val</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span><span style='color:gray'>(</span><span
style='color:red'>N'54321'</span><span style='color:gray'>,</span> <span
style='color:red'>N'\d'</span><span style='color:gray'>,</span> <span
style='color:red'>''</span><span style='color:gray'>);</span> <span
style='color:green'>--series of numbers</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>Sequence</span><span style='color:gray'>,</span> <span
style='color:teal'>Token</span> <span style='color:blue'>AS</span> <span
style='color:teal'>val</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>clr</span><span style='color:gray'>.</span><span
style='color:teal'>RegexMatches</span><span style='color:gray'>(</span><span
style='color:red'>N'text1234'</span><span style='color:gray'>,</span> <span
style='color:red'>N'([a-zA-z0-9])'</span><span style='color:gray'>,</span> <span
style='color:red'>''</span><span style='color:gray'>);</span> <span
style='color:green'>--text and numbers</span></span></p>
</div>
<br/>
<p style="margin-bottom: 0px; font-weight: bold;">Query that returns valid Email addresses and one that only returns invalid addresses:</p>
<div class="WordSection2">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>IF</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:fuchsia'>OBJECT_ID</span><span style='color:gray'>(</span><span
style='color:red'>'tempdb..#customer_email'</span><span style='color:gray'>)</span>
<span style='color:gray'>IS</span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:blue'>DROP</span> <span style='color:blue'>TABLE</span> <span
style='color:teal'>#customer_email</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>CREATE</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#customer_email</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:gray'>(</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>email_id</span> <span style='color:blue'>int</span> <span
style='color:blue'>identity</span> <span style='color:blue'>primary</span> <span
style='color:blue'>key</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:teal'>cust_id</span> <span style='color:blue'>int</span> <span
style='color:gray'>NOT</span> <span style='color:gray'>NULL,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:teal'>email</span> <span style='color:blue'>nvarchar</span><span
style='color:gray'>(</span>100<span style='color:gray'>)</span> <span
style='color:blue'>unique</span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>INSERT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>INTO</span> <span style='color:teal'>#customer_email</span><span
style='color:blue'> </span><span style='color:gray'>(</span><span
style='color:teal'>cust_id</span><span style='color:gray'>,</span> <span
style='color:teal'>email</span><span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:blue'>SELECT</span> 1<span style='color:gray'>,</span><span
style='color:red'>'john.doe@a+++cme. com'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:blue'>SELECT</span> 1<span style='color:gray'>,</span><span
style='color:red'>'JohnDoe@somewhere.com'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:blue'>SELECT</span> 2<span style='color:gray'>,</span><span
style='color:red'>'Sally.Smith@Microsoft'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:blue'>SELECT</span> 3<span style='color:gray'>,</span><span
style='color:red'>'AlChurch@turning.net'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'>
<span style='color:blue'>SELECT</span> 4<span style='color:gray'>,</span><span
style='color:red'>'JaneDoe@aol.com'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>GO</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>DECLARE</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@validEmail</span> <span style='color:blue'>nvarchar</span><span
style='color:gray'>(</span>1000<span style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SET</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@validEmail</span><span style='color:gray'>=</span><span
style='color:red'>'^(([a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]+(\.[a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]+)*){1,64}@(([A-Za-z0-9]+[A-Za-z0-9-_]*){1,63}\.)*(([A-Za-z0-9]+[A-Za-z0-9-_]*){3,63}\.)+([A-Za-z0-9]{2,4}\.?)+){1,255}$'</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-- (1) This will return records with only valid EMail addresses</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>e.</span> <span
style='color:grey'>*</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>#customer_email</span> <span style='color:teal'>e</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:gray'>CROSS</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:gray'>APPLY</span> <span style='color:teal'>clr</span><span
style='color:gray'>.</span><span style='color:teal'>RegexMatches</span><span
style='color:gray'>(</span><span style='color:teal'>e</span><span
style='color:gray'>.</span><span style='color:teal'>email</span><span
style='color:gray'>,</span><span style='color:teal'>@validEmail</span><span
style='color:gray'>,</span> 0<span style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:green'>-- (2) This will return records with only invalid EMail addresses</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>e</span><span style='color:gray'>.</span><span
style='color:teal'>email_id</span><span style='color:gray'>,</span> <span
style='color:teal'>e</span><span style='color:gray'>.</span><span
style='color:teal'>cust_id</span><span style='color:gray'>,</span> <span
style='color:teal'>e</span><span style='color:gray'>.</span><span
style='color:teal'>email</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>#customer_email</span> <span style='color:teal'>e</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>EXCEPT</span><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>ex</span><span style='color:gray'>.</span><span
style='color:teal'>email_id</span><span style='color:gray'>,</span> <span
style='color:teal'>ex</span><span style='color:gray'>.</span><span
style='color:teal'>cust_id</span><span style='color:gray'>,</span> <span
style='color:teal'>ex</span><span style='color:gray'>.</span><span
style='color:teal'>email</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>#customer_email</span> <span style='color:teal'>ex</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:gray'>CROSS</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:gray'>APPLY</span> <span style='color:teal'>clr</span><span
style='color:gray'>.</span><span style='color:teal'>RegexMatches</span><span
style='color:gray'>(</span><span style='color:teal'>ex</span><span
style='color:gray'>.</span><span style='color:teal'>email</span><span
style='color:gray'>,</span> <span style='color:teal'>@validEmail</span><span
style='color:gray'>,</span> 0<span style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>DROP</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#customer_email</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'> </span></p>
</div>
<br/>
<p style="font-weight: bold;">... EMail Query results:</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfV9XPZX9_NVucASLLj1PQp7K74W-q-AJs6ynOruyBoGzB0iqAzPUb1GdB_Gj57TwGMghU5hn4uxiOTSkW20Fx9yfLIT1fTX66LUwP9FnTio5AuZNb_ejHBD8rbUukTarxoSiozLECso8/s1600/x.png" imageanchor="1" >
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfV9XPZX9_NVucASLLj1PQp7K74W-q-AJs6ynOruyBoGzB0iqAzPUb1GdB_Gj57TwGMghU5hn4uxiOTSkW20Fx9yfLIT1fTX66LUwP9FnTio5AuZNb_ejHBD8rbUukTarxoSiozLECso8/s320/x.png" />
</a>
<br/><br/>
<h2>Conclusion</h2>
<p>Today we reviewed the steps for setting up and using mdq.RegexMatches. Thanks for reading!</p>
<br/>
<p><b><i>--ab</i></b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 12/7/2013 (minor updates, repaired broken links)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-18718954590701950862013-05-27T18:31:00.001-05:002013-05-27T18:44:14.325-05:005 Career Killers You Must Absolutely Avoid<div class="rpuEmbedCode">
<div class="rpuArticle rpuRepost-de7e4917ba3db9d1e6df371e272551dc-top" style="margin:0;padding:0;">
<script src="https://1.rp-api.com/rjs/repost-article.js?3" type="text/javascript" data-cfasync="false"></script><a href="http://s.tt/1yK1f" class="rpuThumb" rel="norewrite"><img src="//img.1.rp-api.com/thumb/4066012" style="float:left;margin-right:10px;" /></a><a href="http://s.tt/1yK1f" class="rpuTitle" rel="norewrite"><h2>5 Career Killers You Must Absolutely Avoid</h2></a> (via <a href="http://s.tt/1yK1f" class="rpuHost" rel="norewrite">Dice News in Tech</a>)<p class="rpuSnip">
Here are a couple of obvious ways to get yourself in trouble: Insult your boss on Facebook, and look for a new job on company time. But as annoyed as your boss might get over those, they’re usually survivable mistakes, at least as long as you don’t repeat them. The real dangers that could lead…
</p>
</div>
</div><!-- put the "tease", "jump" or "more" break here --><hr id="system-readmore" style="display: none;" /><a name='more'></a><!--break--><hr class="at-page-break" style="display: none;"/><div class="rpuEmbedCode">
<div class="rpuArticle rpuRepostMain rpuRepost-de7e4917ba3db9d1e6df371e272551dc-bottom" style="display:none;"> </div>
<div style="display: none;"><!-- How to customize this embed: http://www.repost.us/article-preview/#!shash=de7e4917ba3db9d1e6df371e272551dc --></div>
</div>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-84746637779150949482013-05-21T19:24:00.001-05:002013-10-04T19:42:48.841-05:00Reading XML Data<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<br/>
<h2 class="x">Intro</h2>
<p>
In this post I will demonstrate how to query XML data. This is one of those things that is much easier to learn by example so I provided five examples. I won't get into <i>how</i> to get the data in or out of SQL Server because that topic is outside the scope of this article. All you need to know is that it's easy if you know a little <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa384642(v=vs.85).aspx">WMI</a> scripting, <a href="http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx">powershell</a> or .NET.
</p>
<br/><br/>
<h2 class="x">Examples</h2>
<p>
In the examples below I will read XML data from:
</p>
<ol>
<li>An XML fragment from a MS Word Doc</li>
<li>An XML fragment from an SSRS Report</li>
<li>An event from the Windows Event Viewer</li>
<li>An XML fragment from an SSIS package</li>
<li>An XML fragment from a SQL trace</li>
</ol>
<p>
For these examples I will not include the entire XML document because the XML can be quite verbose. Instead I am using XML fragments (a portion of the entire XML document). This way you can get the general idea without having to copy/paste a ton of XML.
</p>
<br/>
<h2 class="x">Setting up the sample data</h2>
<p style="margin-bottom: 0px;">Use this code:</p>
<div style="border: solid grey 1px; padding: 5px; height: 320px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/*******************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>(0) <span class=GramE>Create</span>
some sample data</span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>Note: For simplicity I am only
including XML fragments and </span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>I removed the namespaces, namespace
declarations, etc. </span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>*******************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>IF</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:fuchsia'>OBJECT_<span class=GramE>ID<span
style='color:gray'>(</span></span></span><span style='color:red'>'<span
class=SpellE>tempdb</span>..#data'</span><span style='color:gray'>)</span> <span
style='color:gray'>IS</span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>DROP</span> <span style='color:blue'>TABLE</span> <span
style='color:teal'>#data</span><span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>CREATE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:blue'>TABLE</span> <span
style='color:teal'>#data</span><span style='color:blue'> </span><span
style='color:gray'>(</span><span style='color:teal'>id</span> <span
class=SpellE><span style='color:blue'>int</span></span> <span style='color:
blue'>primary</span> <span style='color:blue'>key</span><span style='color:
gray'>,</span> <span class=SpellE><span style='color:teal'>xmldesc</span></span>
<span class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>100<span style='color:gray'>)</span>
<span style='color:gray'>not</span> <span style='color:gray'>null,</span> <span
style='color:teal'>doc</span> <span style='color:blue'>xml</span> <span
style='color:gray'>not</span> <span style='color:gray'>null);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@<span class=SpellE>worddoc</span></span>
<span style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><<span class=SpellE><span class=GramE>wordDocument</span></span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><<span class=GramE>body</span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><p><r><t>1:<span
style='mso-spacerun:yes'> </span>Paragraph 1...</t></r></p></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><p><r><t>2:<span
style='mso-spacerun:yes'> </span>Paragraph 2...</t></r></p></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><p><r><t>3:<span
style='mso-spacerun:yes'> </span>Paragraph 3...</t></r></p></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></body></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></<span class=SpellE>wordDocument</span>>'</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>;</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@<span class=SpellE>ssrs_report</span></span>
<span style='color:blue'>xml</span><span style='color:gray'>=</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:fuchsia'>REPLACE</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>(</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:fuchsia'>CAST</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'>'<Report></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><<span
class=SpellE>DataSources</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSource</span> Name="<span class=SpellE>QuestNTDev</span>">
</span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>DataSourceReference</span>><span class=SpellE>Something_Dev</span></<span
class=SpellE>DataSourceReference</span>> </span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>rd<span class=GramE>:SecurityType</span></span>>None</<span
class=SpellE>rd:SecurityType</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><rd<span
class=GramE>:DataSourceID</span>>54f84859-75fd-45a8-a5b7-5f6fec3ede7b</rd:DataSourceID></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span></<span
class=SpellE>DataSource</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span></<span
class=SpellE>DataSources</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><<span
class=SpellE>DataSets</span>> </span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_major_region</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_country_code</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_acct_group</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_currency_code</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_profit_center</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_office_id</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_total_by_office</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_p_subtotal_on_summary</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_get_spid</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>DataSet</span> Name="<span class=SpellE>ds_output</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span></<span
class=SpellE>DataSets</span>></span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></Report>'</span><span
style='font-size:8.0pt;font-family:Consolas'> <span style='color:blue'>AS</span>
<span class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>1000<span style='color:
gray'>)),</span><span style='color:red'>'rd:'</span><span style='color:gray'>,</span><span
style='color:red'>''</span><span style='color:gray'>);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@events</span> <span
style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><Events></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><Event></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><System></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Provider
Name="MSSQL$SQL2012"/></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>EventID</span> Qualifiers="16384">17137</<span
class=SpellE>EventID</span>></span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>TimeCreated</span> <span class=SpellE>SystemTime</span>="2012-05-10T16:18:53.000000000Z"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>EventRecordID</span>>16563</<span class=SpellE>EventRecordID</span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Channel>Application</Channel></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Computer>SQLSERVER1</Computer></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span></System></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>EventData</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Data>ReportServer$SQL2012TESTTempDB</Data></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Binary>F14200000A000000...</Binary></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span></<span
class=SpellE>EventData</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span></Event></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><Event></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><System></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Provider
Name="MSSQL$SQL2012"/></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>EventID</span> Qualifiers="19999">1000225</<span
class=SpellE>EventID</span>></span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>TimeCreated</span> <span class=SpellE>SystemTime</span>="2013-05-6T16:18:53.000000000Z"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>EventRecordID</span>>16999</<span class=SpellE>EventRecordID</span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Channel>Application</Channel></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Computer>SQLSERVER1</Computer></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span></System></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>EventData</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Data>blah</Data></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><Binary>F14200000A000000...</Binary></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span></<span
class=SpellE>EventData</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span></Event></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></Events>'</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>;</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@<span class=SpellE>ssis_package</span></span>
<span style='color:blue'>xml</span><span style='color:gray'>=</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:fuchsia'>REPLACE</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>(</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:fuchsia'>CAST</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'>'<<span class=SpellE>DTS<span
class=GramE>:Executable</span></span> <span class=SpellE>DTS:ExecutableType</span>="SSIS.Package.2"></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><<span class=SpellE>DTS<span class=GramE>:Property</span></span> <span
class=SpellE>DTS:Name</span>="<span class=SpellE>PackageFormatVersion</span>">2</<span
class=SpellE>DTS:Property</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><<span class=SpellE>DTS<span class=GramE>:Property</span></span> <span
class=SpellE>DTS:Name</span>="<span class=SpellE>VersionComments</span>"></<span
class=SpellE>DTS:Property</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><<span class=SpellE>DTS<span class=GramE>:Property</span></span> <span
class=SpellE>DTS:Name</span>="<span class=SpellE>CreatorName</span>">DOMAIN\username</<span
class=SpellE>DTS:Property</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><<span class=SpellE>DTS<span class=GramE>:Property</span></span> <span
class=SpellE>DTS:Name</span>="<span class=SpellE>CreatorComputerName</span>">AJBTEST</<span
class=SpellE>DTS:Property</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><<span class=SpellE>DTS<span class=GramE>:Property</span></span> <span
class=SpellE>DTS:Name</span>="<span class=SpellE>CreationDate</span>"
</span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span><span class=SpellE>DTS<span
class=GramE>:DataType</span></span>="7">11/25/2012 3:35:28 PM</<span
class=SpellE>DTS:Property</span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></<span class=SpellE>DTS<span
class=GramE>:Executable</span></span>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:red'>'</span><span
style='font-size:8.0pt;font-family:Consolas'> <span style='color:blue'>AS</span></span></span><span
style='font-size:8.0pt;font-family:Consolas'> <span class=SpellE><span
style='color:blue'>varchar</span></span><span style='color:gray'>(</span>1000<span
style='color:gray'>)),</span><span style='color:red'>'DTS:'</span><span
style='color:gray'>,</span><span style='color:red'>''</span><span
style='color:gray'>);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@<span class=SpellE>sqlTrace</span></span>
<span style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><<span class=SpellE>TraceData</span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Events></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Event id="65534" name="Trace Start"></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="14" name="<span class=SpellE>StartTime</span>">2013-05-10T17:21:28.007-05:00</Column></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></Event></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><Event id="13" name="<span
class=SpellE>SQL<span class=GramE>:BatchStarting</span></span>"></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="1" name="<span class=SpellE>TextData</span>">SELECT
1</Column></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="3" name="<span class=SpellE>DatabaseID</span>">7</Column></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="35" name="<span class=SpellE>DatabaseName</span>"><span
class=SpellE>ajbTest</span></Column></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="12" name="SPID">60</Column></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><Column id="14" name="<span
class=SpellE>StartTime</span>">2013-05-10T17:21:48.917-05:00</Column></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="26" name="<span class=SpellE>ServerName</span>">MYSERVER\SQL2012Express</Column></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></Event></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Event id="65533" name="Trace Stop"></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><Column id="14" name="<span class=SpellE>StartTime</span>">2013-05-10T17:21:54.46-05:00</Column></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></Event></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></Events></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></<span class=SpellE>TraceData</span>>'</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>;</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>INSERT</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:blue'>INTO</span> <span
style='color:teal'>#data</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span> 1<span style='color:gray'>,</span> <span
style='color:red'>'An XML fragment from a MS Word Doc'</span><span
style='color:gray'>,</span><span style='mso-tab-count:1'> </span> <span
style='color:teal'>@<span class=SpellE>worddoc</span></span> <span
style='color:blue'>UNION</span> <span style='color:gray'>ALL</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span> 2<span style='color:gray'>,</span> <span
style='color:red'>'An XML fragment from an SSRS Report'</span><span
style='color:gray'>,</span> <span style='color:teal'>@<span class=SpellE>ssrs_report</span></span>
<span style='color:blue'>UNION</span> <span style='color:gray'>ALL</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span> 3<span style='color:gray'>,</span> <span
style='color:red'>'An event from the Event Viewer'</span><span
style='color:gray'>,</span><span style='mso-tab-count:2'> </span> <span
style='color:teal'>@events</span> <span style='color:blue'>UNION</span> <span
style='color:gray'>ALL</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span> 4<span style='color:gray'>,</span> <span
style='color:red'>'An XML fragment from an SSIS <span class=SpellE>pkg</span>'</span><span
style='color:gray'>,</span><span style='mso-tab-count:1'> </span> <span
style='color:teal'>@<span class=SpellE>ssis_package</span></span> <span
style='color:blue'>UNION</span> <span style='color:gray'>ALL</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span> 5<span style='color:gray'>,</span> <span
style='color:red'>'An XML fragment from a SQL trace'</span><span
style='color:gray'>,</span><span style='mso-tab-count:1'> </span> <span
style='color:teal'>@<span class=SpellE>sqlTrace</span></span><span
style='color:gray'>;</span></span></p>
</div>
<br/>
<p>
The contents of #data will look like this:
</p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLG1zR6iocFXlmEgyfOkEO_7duQ2dAAS2XLWF4fPGH5Y3O_Mi7BiR68rIup5Y75ZtHEXCg0dZNHa7zc6h57BlMMePSMMnkDDQyQ5PrJymwUfiqeGNMfY2nhluRRbR3ENJqxmjN1V80YGE/s1600/x+results.png"/>
<br/><br/><br/>
<h2 class="x">Reading XML data</h2>
<p style="margin-bottom: 0px;">Note my comments in the code</p>
<div style="border: solid grey 1px; padding: 5px; height: 320px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/*******************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>(1) Reading from a word doc</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>*******************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8.0pt;font-family:Consolas'> <span class=SpellE><span class=GramE><span
style='color:teal'>p</span><span style='color:gray'>.</span><span
style='color:teal'>value</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:red'>'(r/t/text())[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(20)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>p_num</span></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>FROM</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>#data</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>CROSS</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:gray'>APPLY</span> <span
class=SpellE><span class=GramE><span style='color:teal'>doc</span><span
style='color:gray'>.</span><span style='color:teal'>nodes</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'<span
class=SpellE>wordDocument</span>/body/p'</span><span style='color:gray'>)</span>
<span style='color:blue'>AS</span> <span style='color:teal'>doc</span><span
style='color:gray'>(</span><span style='color:teal'>p</span><span
style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>WHERE</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>id</span><span
style='color:gray'>=</span>1<span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/*******************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>(2) Reading from an SSRS Report</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>*******************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>datasource</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(<span
class=SpellE>DataSourceReference</span>/text())[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(20)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>DataSource</span></span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>dataset</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(@Name)'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(20)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>DataSet</span></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>FROM</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>#data</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>CROSS</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:gray'>APPLY</span> <span
class=SpellE><span class=GramE><span style='color:teal'>doc</span><span
style='color:gray'>.</span><span style='color:teal'>nodes</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'Report/<span
class=SpellE>DataSources</span>/<span class=SpellE>DataSource</span>'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>datasources</span></span><span
style='color:gray'>(</span><span class=SpellE><span style='color:teal'>datasource</span></span><span
style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>CROSS</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:gray'>APPLY</span> <span
class=SpellE><span class=GramE><span style='color:teal'>doc</span><span
style='color:gray'>.</span><span style='color:teal'>nodes</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'Report/<span
class=SpellE>DataSets</span>/<span class=SpellE>DataSet</span>'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>datasets</span><span style='color:gray'>(</span><span
style='color:teal'>dataset</span><span style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>WHERE</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>id</span><span
style='color:gray'>=</span>2<span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/*******************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>(3) Reading from extracted event viewer
data</span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>*******************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>[System]</span><span style='color:gray'>.</span><span
class=GramE><span style='color:teal'>value</span><span style='color:gray'>(</span></span><span
style='color:red'>'(Computer/text())[1]'</span><span style='color:gray'>,</span>
<span style='color:red'>'<span class=SpellE>varchar</span>(20)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>SQLBox</span></span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>[System]</span><span style='color:gray'>.</span><span
class=GramE><span style='color:teal'>value</span><span style='color:gray'>(</span></span><span
style='color:red'>'(../<span class=SpellE>EventData</span>/Data/<span
class=GramE>text(</span>))[1]'</span><span style='color:gray'>,</span> <span
style='color:red'>'<span class=SpellE>varchar</span>(50)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>DB</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>[System]</span><span style='color:gray'>.</span><span
class=GramE><span style='color:teal'>value</span><span style='color:gray'>(</span></span><span
style='color:red'>'(<span class=SpellE>TimeCreated</span>/@<span class=SpellE>SystemTime</span>)[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(20)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>StartupTime</span></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>FROM</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>#data</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>CROSS</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:gray'>APPLY</span> <span
class=SpellE><span class=GramE><span style='color:teal'>doc</span><span
style='color:gray'>.</span><span style='color:teal'>nodes</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'Events/Event/System'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:green'>events</span><span style='color:gray'>(</span><span
style='color:teal'>[System]</span><span style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>WHERE</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>id</span><span
style='color:gray'>=</span>3<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>AND</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>[System]</span><span
style='color:gray'>.</span><span class=GramE><span style='color:teal'>value</span><span
style='color:gray'>(</span></span><span style='color:red'>'(<span class=SpellE>EventRecordID</span>/text())[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>int</span>'</span><span
style='color:gray'>)=</span>16563<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>AND</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>[System]</span><span
style='color:gray'>.</span><span class=GramE><span style='color:teal'>value</span><span
style='color:gray'>(</span></span><span style='color:red'>'(Channel/text())[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(20)'</span><span
style='color:gray'>)=</span><span style='color:red'>'Application'</span><span
style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/*******************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>(4) Reading from a SSIS package</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>*******************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>x</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(@<span
class=SpellE>ExecutableType</span>)[1]'</span><span style='color:gray'>,</span>
<span style='color:red'>'<span class=SpellE>varchar</span>(100)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>PkgType</span></span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>x</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(Property[@Name="<span
class=SpellE>CreatorName</span>"])[1]'</span><span style='color:gray'>,</span>
<span style='color:red'>'<span class=SpellE>varchar</span>(100)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>Creator</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>x</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(Property[@Name="<span
class=SpellE>CreationDate</span>"])[1]'</span><span style='color:gray'>,</span>
<span style='color:red'>'<span class=SpellE>varchar</span>(100)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>CreatedOn</span></span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>x</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(Property[@Name="<span
class=SpellE>CreatorComputerName</span>"])[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(100)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>Computer</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>FROM</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>#data</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>CROSS</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:gray'>APPLY</span> <span
class=SpellE><span class=GramE><span style='color:teal'>doc</span><span
style='color:gray'>.</span><span style='color:teal'>nodes</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'Executable'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>ex</span><span style='color:gray'>(</span><span
style='color:teal'>x</span><span style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>WHERE</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>id</span><span
style='color:gray'>=</span>4<span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/*******************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>(5) Reading from an SQL trace (XML
format)</span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>*******************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>SELECT</span><span
style='font-size:8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span><span class=SpellE><span style='color:teal'>e</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>'(@name)[1]'</span><span
style='font-size:8.0pt;font-family:Consolas;color:gray'>,</span><span
style='font-size:8.0pt;font-family:Consolas'> <span style='color:red'>'<span
class=SpellE>varchar</span>(100)'</span><span style='color:gray'>)</span> <span
style='color:blue'>AS</span> <span style='color:teal'>[event]</span><span
style='color:gray'>,</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>e</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(Column[@name="<span
class=SpellE>StartTime</span>"]/text())[1]'</span><span style='color:gray'>,</span>
<span style='color:red'>'<span class=SpellE>varchar</span>(100)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>StartTime</span></span><span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>e</span><span
style='color:gray'>.</span><span style='color:teal'>value</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'(Column[@id="1"]/text())[1]'</span><span
style='color:gray'>,</span> <span style='color:red'>'<span class=SpellE>varchar</span>(100)'</span><span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>Command</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>FROM</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>#data</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:gray'>CROSS</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:gray'>APPLY</span> <span
class=SpellE><span class=GramE><span style='color:teal'>doc</span><span
style='color:gray'>.</span><span style='color:teal'>nodes</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:red'>'<span
class=SpellE>TraceData</span>/Events/Event'</span><span style='color:gray'>)</span>
<span style='color:blue'>AS</span> <span style='color:green'>events</span><span
style='color:gray'>(</span><span style='color:teal'>e</span><span
style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>WHERE</span><span style='font-size:8.0pt;
font-family:Consolas'> <span style='color:teal'>id</span><span
style='color:gray'>=</span>5<span style='color:gray'>;<o:p></o:p></span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'></span></p>
</div>
<br/><br/>
<h2 class="x">... and the results:</h2>
<br/>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1mNLfaSBm1Fuqj6fet2AuSHHfYrLeRcXWsfT8aibMimdvy2yhJnCyVNFnm5ZcvjhT-tnYBAFUnGL_D_ZQrGTbE5qAIga-Is3Vqv5JQTeOS9rPvgFMSaUs9U8Elb01FMwGkJjQ1nJgNz4/s1600/x+results.png"/>
<br/><br/>
<h2 class="x">Conclusion</h2>
<p>
Today I demonstrated how to use T-SQL to read from different XML data structures. Thanks for reading!
</p>
<br/>
<p><i><b>--ab</b></i></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 5/21/2013 (Posted)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-60934783002911333602013-05-01T19:21:00.001-05:002013-05-01T19:21:51.302-05:00Exploding Transaction Logs<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<br/>
<h2 class="x">Intro</h2>
<p>
This is a great article and a must-read for any DBA who has dealt with out-of-control transaction log growth. Enjoy!
</p>
<p>
<a href="https://www.simple-talk.com/content/article.aspx?article=1765">Managing the SQL Server Transaction Log: Dealing with Explosive Log Growth</a>
</p>
<br/>
<p><i><b>--ab</b></i></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 5/1/2013 (Posted)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-90497574377629551932013-04-29T16:33:00.000-05:002015-09-28T19:32:04.886-05:00A Set-Based Solution to the Longest Common Subsequence Problem<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<br/>
<h2 class="x">Updated on 9/28/2015</h2>
<br/>
<b style="font-size: 12pt;">
<u>Update</u>:
</b> Exactly 2 and a half years ago I posted what I believed to be a solution to the Longest Common Subsequence problem using a Tally table. Unfortunately I got a substring and a subsequence mixed up. Ironically, if you look at the Wikipedia page for the <a href="http://en.wikipedia.org/wiki/Longest_common_subsequence_problem">Longest Common Subsequence</a> the first line reads, "<i>Not to be confused with longest common substring problem.</i>" and for the <a href="https://en.wikipedia.org/wiki/Longest_common_substring_problem">Longest Common Substring</a> the first line reads, "<i>Not to be confused with longest common subsequence problem.</i>". I guess I'm not the only one who has gotten these confused. Anyhow, I have spent the past 2 and a half years trying to develop a purely set-based solution to the Longest Common Subsequence and have failed. It's been a great learning experience though; this type of exercise has dramatically sharpened my SQL and math skills. For a great solution to this problem see Phil Factor's <a href="https://www.simple-talk.com/blogs/2015/01/09/string-comparisons-in-sql-the-longest-common-subsequence/">excellent solution</a> from earlier this year.
I do have an updated solution to the Longest Common Substring however. It uses my N-Grams Function. Below is my updated NGrams8K function and LCSS
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:2.0in 1.4in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<br/><br/>
<h2 class="x">
A Nasty Fast Set-Based Solution to the Longest Common <i>Substring</i> Problem:
</h2>
<div style="border: solid grey 1px; padding: 5px; height: 450px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class="MsoNormal" style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>CREATE</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='color:blue'>FUNCTION</span> dbo<span
style='color:gray'>.</span>NGrams8K<span style='color:blue'> </span><span
style='color:gray'>(</span>@string <span class='GramE'>
<span style='color:blue'>varchar</span>
<span
style='color:gray'>(</span>
</span>8000<span style='color:gray'>),</span> @n <span
class='SpellE'>
<span style='color:blue'>int</span>
</span><span style='color:gray'>)</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>/********************************************************************</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
Created by:<span style='mso-tab-count:
1'> </span><span style='mso-spacerun:yes'> </span>Alan Burstein
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
Created on:<span
style='mso-spacerun:yes'> </span>3/10/2014
</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>Last Updated on: 09/09/2015</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p> </o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span class='GramE'>
<span
style='font-size:8.5pt;font-family:Consolas;color:green'>n-gram</span>
</span>
<span
style='font-size:8.5pt;font-family:Consolas;color:green'> defined:</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span>In the fields of computational linguistics and probability,
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span><span class='GramE'>an</span> n-gram is a contiguous sequence of n items
from a given
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span><span class='GramE'>sequence</span> of text or speech. The items can be
phonemes, syllables,
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span><span class='GramE'>letters</span>, words or base pairs according to the
application.
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span>For more information see: http://en.wikipedia.org/wiki/N-gram
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p> </o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>Use:</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span>Outputs a stream of tokens based on an input string.
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span>Similar to <span class='SpellE'>mdq.nGrams</span>:
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span>http://msdn.microsoft.com/en-us/library/<span class='GramE'>ff487027(</span>v=sql.105).aspx.
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span>Except it only returns characters as long as K.
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'>
</span><span class='GramE'>nGrams8K</span> also includes the position of the
"Gram" in the string.
</span>
<span style='font-size:8.5pt;font-family:
Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p> </o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>Revision History:</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span>Rev 00 - 03/10/2014 Initial Development - Alan
Burstein
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span>Rev 01 - 05/22/2015 Removed DQS N-Grams
functionality,
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span><span class='GramE'>improved</span> <span
class='SpellE'>iTally</span> - Alan Burstein
</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span>Rev 02 - 05/22/2015 Changed TOP logic to
remove implicit conversion
</span>
<span style='font-size:8.5pt;font-family:
Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span>- Alan Burstein
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span>Rev 03 - 9/9/2015 Added logic to only return
values if @n is greater
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span
style='mso-spacerun:yes'> </span><span class='GramE'>than</span> 0 and
less then length of @string - Alan Burstein
</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>********************************************************************/</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>RETURNS</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='color:blue'>TABLE</span>
<span
style='color:blue'>WITH</span>
<span style='color:blue'>SCHEMABINDING</span>
<span
style='color:blue'>AS</span>
<span style='color:blue'>RETURN</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:blue'>WITH</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span><span
class='GramE'>
L1<span style='color:gray'>(</span>
</span>N<span style='color:gray'>)</span>
<span style='color:blue'>AS</span> <o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'> </span>
</span>
<span
style='font-size:8.5pt;font-family:Consolas;color:gray'>(</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span><span
style='color:blue'>SELECT</span> 1<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:blue'>FROM </span>
<span style='color:gray'>(</span>
<span
style='color:blue'>VALUES</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'>
</span>
</span>
<span style='font-size:8.5pt;font-family:Consolas;color:gray'>
(NULL)<span
class='GramE'>,(</span>NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span><span
style='color:gray'>)</span> <span class='GramE'>
t<span style='color:gray'>(</span>
</span>N<span
style='color:gray'>)</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:gray'>),</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span><span
class='SpellE'>
<span class='GramE'>iTally</span>
</span><span class='GramE'>
<span
style='color:gray'>(</span>
</span>N<span style='color:gray'>)</span> <span
style='color:blue'>AS</span> <o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
<span style='mso-spacerun:yes'> </span>
</span>
<span
style='font-size:8.5pt;font-family:Consolas;color:gray'>(</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span> <span class='GramE'>
<span style='color:blue'>TOP</span>
<span
style='color:gray'>(</span>
</span><span style='color:fuchsia'>CONVERT</span><span
style='color:gray'>(</span><span style='color:blue'>BIGINT</span><span
style='color:gray'>,(</span><span style='color:fuchsia'>DATALENGTH</span><span
style='color:gray'>(</span>@string<span style='color:gray'>)-(</span>@n<span
style='color:gray'>-</span>1<span style='color:gray'>)),</span>0<span
style='color:gray'>))</span> <o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-tab-count:1'> </span>
<span
style='mso-spacerun:yes'> </span>
<span style='color:fuchsia'>
ROW_<span
class='GramE'>
NUMBER<span style='color:gray'>(</span>
</span>
</span>
<span
style='color:gray'>)</span>
<span style='color:blue'>OVER </span>
<span
style='color:gray'>(</span>
<span style='color:blue'>ORDER</span>
<span
style='color:blue'>BY </span>
<span style='color:gray'>(</span>
<span
style='color:blue'>SELECT</span>
<span style='color:gray'>NULL))</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-tab-count:1'> </span><span
style='color:blue'>FROM</span> L1 a <span style='color:gray'>CROSS</span> <span
style='color:gray'>JOIN</span> L1 b <span style='color:green'>
-- add two more
cross joins to support <span class='GramE'>varchar(</span>max)
</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:gray'>)</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:blue'>SELECT</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-tab-count:1'> </span><span
class='GramE'>position</span> <span style='color:gray'>=</span> N<span
style='color:gray'>,</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-tab-count:1'> </span><span
class='GramE'>token</span> <span style='color:gray'>=</span> <span
style='color:fuchsia'>SUBSTRING</span><span style='color:gray'>(</span>@<span
class='SpellE'>
string<span style='color:gray'>,</span>N<span style='color:gray'>,</span>@n
</span><span
style='color:gray'>)</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:blue'>FROM</span>
<span class='SpellE'>iTally</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span><span
style='color:blue'>WHERE</span> @n <span style='color:gray'>></span> 0 <span
style='color:gray'>AND</span> @n <span style='color:gray'><=</span> <span
class='GramE'>
<span style='color:fuchsia'>DATALENGTH</span>
<span
style='color:gray'>(</span>
</span>@string<span style='color:gray'>);</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
GO<o:p></o:p>
</span>
</p>
<p class='MsoNormal'>
<span style='font-size:8.5pt;line-height:107%'>
<o:p> </o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>/********************************************************************</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
Created by: <span
style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span>Alan
Burstein
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
Created on: <span
style='mso-spacerun:yes'> </span>3/10/2013
</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>Last Updated on: 09/20/2015</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p> </o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>Use:</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
Returns the longest common substring between two strings.
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<o:p> </o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>Revision History:</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span>Rev 00 - 03/10/2013 Initial Development - Alan
Burstein
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:green'>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span>Rev 03 - 09/20/2015 Performance tuned using
NGrams8K - Alan Burstein
</span>
<span style='font-size:8.5pt;font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal'>
<span style='font-size:8.5pt;line-height:107%;font-family:
Consolas;color:green'>********************************************************************/</span>
<span
style='font-size:8.5pt;line-height:107%'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>CREATE</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='color:blue'>FUNCTION</span> dbo<span
style='color:gray'>.</span>LCSS8K<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:gray'>(</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>@string1 <span
class='GramE'>
<span style='color:blue'>varchar</span>
<span style='color:gray'>(</span>
</span>8000<span
style='color:gray'>),</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>@string2 <span
class='GramE'>
<span style='color:blue'>varchar</span>
<span style='color:gray'>(</span>
</span>8000<span
style='color:gray'>)</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:gray'>)</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>RETURNS</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='color:blue'>TABLE</span>
<span
style='color:blue'>WITH</span>
<span style='color:blue'>SCHEMABINDING</span>
<span
style='color:blue'>AS</span>
<span style='color:blue'>RETURN</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>WITH</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
Strings <span style='color:blue'>AS</span> <o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:gray'>(</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
style='color:blue'>SELECT</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>String1 <span
style='color:gray'>=</span> <span style='color:blue'>CASE</span> <span
style='color:blue'>WHEN</span> <span class='GramE'>
<span style='color:fuchsia'>LEN</span>
<span
style='color:gray'>(</span>
</span>@string1<span style='color:gray'>)></span><span
style='color:fuchsia'>LEN</span><span style='color:gray'>(</span>@string2<span
style='color:gray'>)</span> <span style='color:blue'>THEN</span> @string1 <span
style='color:blue'>ELSE</span> @string2 <span style='color:blue'>END</span><span
style='color:gray'>,</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>String2 <span
style='color:gray'>=</span> <span style='color:blue'>CASE</span> <span
style='color:blue'>WHEN</span> <span class='GramE'>
<span style='color:fuchsia'>LEN</span>
<span
style='color:gray'>(</span>
</span>@string1<span style='color:gray'>)></span><span
style='color:fuchsia'>LEN</span><span style='color:gray'>(</span>@string2<span
style='color:gray'>)</span> <span style='color:blue'>THEN</span> @string2 <span
style='color:blue'>ELSE</span> @string1 <span style='color:blue'>END</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:gray'>),</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span class='GramE'>
<span
style='font-size:8.5pt;font-family:Consolas'>
I<span style='color:gray'>(</span>
</span>
</span>
<span
style='font-size:8.5pt;font-family:Consolas'>
N<span style='color:gray'>)</span>
<span style='color:blue'>AS </span><span style='color:gray'>(</span><span
style='color:blue'>SELECT</span> position <span style='color:blue'>FROM</span>
Strings <span style='color:gray'>CROSS</span> <span style='color:gray'>APPLY</span>
dbo<span style='color:gray'>.</span>NGrams8K<span style='color:gray'>(</span>String2<span
style='color:gray'>,</span>1<span style='color:gray'>))</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>SELECT</span>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='color:blue'>TOP </span><span
style='color:gray'>(</span>1<span style='color:gray'>)</span> <span
style='color:blue'>WITH</span> TIES<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>TokenLength
<span style='color:gray'>=</span> I.N<span style='color:gray'>,</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas'>
<span style='mso-spacerun:yes'> </span>
<span
class='SpellE'>NG.Token</span>
<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>FROM</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
I <span style='color:gray'>CROSS</span> <span
style='color:gray'>APPLY</span> Strings s <span style='color:gray'>CROSS</span>
<span style='color:gray'>APPLY</span> <span class='GramE'>
dbo<span
style='color:gray'>.</span>NGrams8K<span style='color:gray'>(</span>
</span>String2<span
style='color:gray'>,</span>I.N<span style='color:gray'>) </span>NG<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>WHERE</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<span class='GramE'>
<span style='color:fuchsia'>CHARINDEX</span>
<span
style='color:gray'>(</span>
</span>NG.token<span style='color:gray'>,</span>String1<span
style='color:gray'>)</span> <span style='color:gray'>></span> 0<o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>ORDER</span>
<span style='font-size:8.5pt;
font-family:Consolas'>
<span style='color:blue'>BY</span> N <span
style='color:blue'>DESC</span><span style='color:gray'>;</span><o:p></o:p>
</span>
</p>
<p class='MsoNormal' style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'>
<span style='font-size:
8.5pt;font-family:Consolas;color:blue'>
GO<o:p></o:p>
</span>
</p>
</div>
<h2 class="x">Conclusion</h2>
<p>
Another problem solved without cursors, loops or recursive CTEs. Let's mark this one up as another win for the <a href="http://www.sqlservercentral.com/articles/T-SQL/62867/">Tally Table</a>. Thanks for reading!
</p>
<br/>
<p>
<i>
<b>--ab</b>
</i>
</p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/>
<br/>
<h2 class="x">Further Reading</h2>
<ul>
<li>
<a href="http://www.columbia.edu/~cs2035/courses/csor4231.F11/lcs.pdf">http://www.columbia.edu/~cs2035/courses/csor4231.F11/lcs.pdf</a>
</li>
<li>
<a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-15-dynamic-programming-longest-common-subsequence/">
Lecture 15: Dynamic Programming, Longest Common Subsequence
</a>
</li>
</ul>
<br/>
<p>
<b>Last Updated:</b> 09/28/2015
</p>
Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com3tag:blogger.com,1999:blog-8428716005044606822.post-49240433422259277442013-04-28T21:06:00.000-05:002013-10-04T19:45:39.476-05:00mdq.XmlTransform -- Part 2: Creating an MS Word Doc<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<br/>
<h2 class="x">Intro</h2>
<p>
<a href="http://xmlsqlninja.blogspot.com/2013/04/missing-clr-part-2-of-2.html" target="_blank" style="color:#0040FF;">mdq.xmlTransform</a> can do amazing things. Today I will show you how to write a T-SQL query that returns a Microsoft Office Word document viewable in Word 2003 and later (and most programs that open .doc or .docx files). With mdq.xmlTransform it's very easy. If you don't yet have it, see <a href="http://xmlsqlninja.blogspot.com/2013/04/setting-up-mdqxmltransform.html" target="_blank" style="color:#0040FF;"">Setting up mdq.XmlTransform </a> for DDL and setup instructions; it takes less than a minute to setup.
</p>
<br/>
<h2 class="x">Let's get right to it</h2>
<p>
Some may be intimidated at the idea of <i><b>writing a query that returns an MS Word document</i></b>. Don't be, it's simple. That's why I'll keep this real short and just show you.</p>
<br/>
<h2 class="x">(1) A Quick WordProcessingML (WordML) tutorial</h2>
<p style="margin-bottom: 5px;">
1. Open notepad (<b><u>Start</u></b> > <b><u>Run</u></b> > <b><u>notepad.exe</u></b>)<br/>
2. Copy/paste the code below into your blank notepad file:
</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:2.0in 1.4in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<div style="border: solid grey 1px; padding: 5px; height: 260px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#8B26C9;mso-ansi-language:EN'><?xml version="1.0"
encoding="utf-8"?></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#8B26C9;
mso-ansi-language:EN'><?<span class=SpellE>mso</span>-application <span
class=SpellE>progid</span>="<span class=SpellE>Word.Document</span>"?></span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:wordDocument</span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:#F5844C;mso-ansi-language:
EN'> </span><span class=SpellE><span lang=EN style='font-size:9.0pt;line-height:
115%;font-family:"Courier New";color:#0099CC;mso-ansi-language:EN'>xmlns:w</span></span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#FF8040;mso-ansi-language:EN'>=</span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:#993300;mso-ansi-language:
EN'>"http://schemas.microsoft.com/office/word/2003/wordml"</span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#000096;mso-ansi-language:EN'>></span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:
EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:body></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:p></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:r></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:t></span><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:black;mso-ansi-language:EN'>Hello Word!!!</span></b><span lang=EN style='font-size:9.0pt;line-height:115%;
font-family:"Courier New";color:#000096;mso-ansi-language:EN'></w:t></span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:r></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:p></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span></span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'></w:body></span><span lang=EN style='font-size:9.0pt;line-height:
115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:wordDocument></span></p>
</div>
<p style="margin-top: 5px;">
3. Go to <b><u>file</u></b> > <b><u>save as</u></b> and for "<i>Save as Type</i>" select <b><u>All Files</u></b><br/>
4. For the file name type <b>helloWord.xml</b><br/>
5. Click <b><u>Save</u></b> then close the file.
</p>
<p>
Now open the file with Microsoft Word version 2003 or later and you should see this:
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix6Jtqrtv-78sGBjcKR5idGlBwz0LK9VlWqRn1Awh3iP-2pw9si4hkwGr8fL9YXv0DIIHGhumO3xFkriVt6GQENdXp6adRbkQ6pRXtTv0-31kPfwVIEQoKQK9adQAVPgYOMPLRLPR0-EM/s1600/helloWorld.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix6Jtqrtv-78sGBjcKR5idGlBwz0LK9VlWqRn1Awh3iP-2pw9si4hkwGr8fL9YXv0DIIHGhumO3xFkriVt6GQENdXp6adRbkQ6pRXtTv0-31kPfwVIEQoKQK9adQAVPgYOMPLRLPR0-EM/s320/helloWorld.jpg" /></a>
<p>
Congrats! You just created your first word document using WordML.
<p>
<br/>
<h2 class="x">(2) Using mdq.xmlTransform to produce a Word document</h2>
<p>SQL Server supports the <a href="http://msdn.microsoft.com/en-us/library/ms189887%28v=sql.105%29.aspx" target="_blank" style="color:#0040FF;">XML Data Type</a>. WordML is XML. mdq.xmlTransform transforms XML. Now that you have seen how WordML works lets write a SQL <b>query</b> that returns a Word Document.
</p>
<p>
Using a database with mdq.xmlTranform, copy/paste and execute this code into SSMS:
</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<div style="border: solid grey 1px; padding: 5px; height: 300px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
9.5pt;font-family:Consolas'> <span style='color:teal'>@xslt</span> <span
style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><xsl:stylesheet
version="1.0"</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span>xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span>xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><xsl:output method="xml"<span style='mso-spacerun:yes'>
</span>xml:space="default" /></span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><!--<span style='mso-spacerun:yes'> </span>This template does all
the work --></span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><xsl:template match="/" xml:space="default"></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><xsl:processing-instruction name="mso-application"
xml:space="default"></span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'>
</span><xsl:text>progid="Word.Document"</xsl:text></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></xsl:processing-instruction></span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><w:wordDocument><!-- This creates the word doc --></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span><w:body></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span><w:p></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span><w:r></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span><w:t>Created with
mdq.xmlTransform (no loops)</w:t></span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span></w:r></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span
style='mso-spacerun:yes'> </span></w:p></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><span style='mso-spacerun:yes'> </span></w:body></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></w:wordDocument></span><span style='font-size:9.5pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span></xsl:template><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-spacerun:yes'>
</span><xsl:template match="DataSourceID"/></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'></xsl:stylesheet>'</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>;</span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
9.5pt;font-family:Consolas'> <span style='color:fuchsia'>REPLACE</span><span
style='color:gray'>(</span><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>xmlTransform</span><span
style='color:gray'>(</span><span style='color:red'>''</span><span
style='color:gray'>,</span><span style='color:teal'>@xslt</span><span
style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
style='mso-spacerun:yes'> </span><span style='color:red'>'<?mso-application
progid="Word.Document"?>'</span><span style='color:gray'>,</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:3'> </span><span
style='mso-spacerun:yes'> </span><span style='color:red'>'<?xml
version="1.0" encoding="ISO-8859-1"?></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><span
style='mso-spacerun:yes'> </span><?mso-application
progid="Word.Document"?>'</span><span style='font-size:9.5pt;
font-family:Consolas;color:gray'>)</span><span style='font-size:9.5pt;
font-family:Consolas'> <span style='color:blue'>AS</span> <span
style='color:teal'>xml_output</span><span style='color:gray'>;<o:p></o:p></span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'><o:p> </o:p></span></p>
</div>
<p>
You should already know what will happen if you: copy/paste the result set into a new notepad file, save it like we did earlier, and then open it with Word (but feel free to do it again if you thought it was cool).
</p>
<br/>
<h2 style="margin-left: 10px;" class="x">...and now for something a little more impressive...</h2>
<p>
Hopefully some developers, DBAs and BI people see the potential here. Think of how many SQL objects that are (or can be) stored in XML format. Query plans, traces, SSRS reports (RDL) and SSIS packages (DTS<u>X</u> packages) to name a few. Word and Excel files, your whatever.config files, a multitude of SharePoint objects, RSS feeds, web service data, Extended Events, etc, etc... <b>All XML</b>. Thanks to the XML data type and mdq.xmlTransform, information from all these things can be stored, measured, analyzed and, as I will show you in a moment, stuffed into XML files or fragments.
</p>
<h2 class="x">(3) Create a Word doc with SSRS Report (RDL) data</h2>
<p>
The code below contains two XML documents. For the first (1) I grabbed an some data from an SSRS RDL file (just part of it to keep things simple). Using T-SQL <a href="http://msdn.microsoft.com/en-us/library/ms186862.aspx" target="_blank" style="color:#0040FF;">REPLACE</a> I removed the rd: namespace references. The second (2) is an XML transform that will extract the Data Provider and Connection String from an SSRS report and use it to create a Word Doc.
<p>
<div style="border: solid grey 1px; padding: 5px; height: 260px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNoSpacing><span class=GramE><b style='mso-bidi-font-weight:normal'><span lang=EN
style='font-size:10.0pt;font-family:"Courier New";color:darkgreen;mso-ansi-language:
EN'><!--</span></b></span><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-size:10.0pt;font-family:"Courier New";color:darkgreen;
mso-ansi-language:EN'><span style='mso-spacerun:yes'> </span>(1) Grab an RDL XML
FRAGMENT from an SSRS report</span></b><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-size:10.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN'> </span></b><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-size:10.0pt;font-family:"Courier New";color:darkgreen;
mso-ansi-language:EN'>--></span></b><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
</span></b><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
color:darkgreen;mso-ansi-language:EN'><!--<span style='mso-spacerun:yes'>
</span>(using T-SQL REPLACE to remove the rd: namespace references)</span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN'> </span><span lang=EN style='font-size:9.0pt;font-family:
"Courier New";color:darkgreen;mso-ansi-language:EN'>--></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
color:#000096;mso-ansi-language:EN'><<span class=SpellE>DataSource</span></span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:#F5844C;
mso-ansi-language:EN'> Name</span><span lang=EN style='font-size:9.0pt;
font-family:"Courier New";color:#FF8040;mso-ansi-language:EN'>=</span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:#993300;
mso-ansi-language:EN'>"<span class=SpellE>ReportingDemo</span>"</span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'>></span><span lang=EN style='font-size:9.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'><DataSourceID></span><span lang=EN style='font-size:9.0pt;font-family:
"Courier New";color:black;mso-ansi-language:EN'>f34d206b-ca72-4ca6-9d5c-4151cd7eaxxx</span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></DataSourceID></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'><<span class=SpellE>ConnectionProperties</span>></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'><<span class=SpellE>DataProvider</span>></span><b style='mso-bidi-font-weight:
normal'><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
color:black;mso-ansi-language:EN'>SQL</span></b><span lang=EN style='font-size:
9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:EN'></<span
class=SpellE>DataProvider</span>></span><span lang=EN style='font-size:9.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'><<span class=SpellE>ConnectString</span>></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN'><br>
<span style='mso-spacerun:yes'> </span><b style='mso-bidi-font-weight:
normal'>Data Source</b>=ABC<span class=GramE>;EFG</span> <b style='mso-bidi-font-weight:
normal'>Catalog</b>=XYZ<br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'></<span class=SpellE>ConnectString</span>></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:black;mso-ansi-language:
EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'></<span class=SpellE>ConnectionProperties</span>></span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN'><br>
</span><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
color:#000096;mso-ansi-language:EN'></<span class=SpellE>DataSource</span>></span><span
lang=EN style='font-size:9.0pt;font-family:"Courier New";color:black;
mso-ansi-language:EN'><br>
<br>
</span><b style='mso-bidi-font-weight:normal'><span lang=EN style='font-size:
10.0pt;font-family:"Courier New";color:darkgreen;mso-ansi-language:EN'><!—(2)
Create an XSLT function that puts this data into a MS Word Doc</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN style='font-size:10.0pt;
font-family:"Courier New";color:black;mso-ansi-language:EN'> </span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN style='font-size:10.0pt;
font-family:"Courier New";color:darkgreen;mso-ansi-language:EN'>--></span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN style='font-size:10.0pt;
font-family:"Courier New";mso-ansi-language:EN'><o:p></o:p></span></b></p>
<p class=MsoNoSpacing><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
mso-ansi-language:EN'><<span class=SpellE>xsl<span class=GramE>:stylesheet</span></span><span
style='color:#F5844C'> version</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"1.0"</span><span style='color:black'><br>
</span><span style='color:#F5844C'><span style='mso-spacerun:yes'> </span></span><span
class=SpellE><span style='color:#0099CC'>xmlns:xsl</span></span><span
style='color:#FF8040'>=</span><span style='color:#993300'>"http://www.w3.org/1999/XSL/Transform"</span><span
style='color:black'><br>
</span><span style='color:#F5844C'><span style='mso-spacerun:yes'> </span></span><span
class=SpellE><span style='color:#0099CC'>xmlns:w</span></span><span
style='color:#FF8040'>=</span><span style='color:#993300'>"http://schemas.microsoft.com/office/word/2003/wordml"</span><span
style='color:#000096'>></span><span style='color:black'><br>
<span style='mso-spacerun:yes'> </span></span><<span class=SpellE>xsl:output</span><span
style='color:#F5844C'> method</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"xml"</span><span style='color:#F5844C'><span
style='mso-spacerun:yes'> </span><span class=SpellE>xml:space</span></span><span
style='color:#FF8040'>=</span><span style='color:#993300'>"default"</span><span
style='color:#F5844C'> omit-xml-declaration</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"no"</span><span style='color:#F5844C'> </span><span
style='color:#000096'>/><o:p></o:p></span></span></p>
<p class=MsoNoSpacing><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><span style='color:darkgreen'><!--<span
style='mso-spacerun:yes'> </span>This template does all the work</span> <span
style='color:darkgreen'>--></span><br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:template</span><span
style='color:#F5844C'> match</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"/<span class=SpellE>DataSource</span>/<span
class=SpellE>ConnectionProperties</span>"</span><span style='color:#F5844C'>
<span class=SpellE>xml:space</span></span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"preserve"</span><span style='color:#000096'>></span><br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:processing</span>-instruction<span
style='color:#F5844C'> name</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"<span class=SpellE>mso</span>-application"</span><span
style='color:#F5844C'> <span class=SpellE>xml:space</span></span><span
style='color:#FF8040'>=</span><span style='color:#993300'>"default"</span><span
style='color:#000096'>></span><br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:text</span>><span
class=SpellE>progid</span>="<span class=SpellE>Word.Document</span>"</<span
class=SpellE>xsl:text</span>><br>
<span style='mso-spacerun:yes'> </span></<span class=SpellE>xsl:processing</span>-instruction><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'><w:wordDocument></span><span
style='color:darkgreen'><!-- This creates the word doc</span> <span
style='color:darkgreen'>--></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'><w:body><o:p></o:p></span></span></p>
<p class=MsoNoSpacing><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
mso-ansi-language:EN'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><span style='color:darkgreen'><!-- These
two templates collect the data --></span><br>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:apply</span>-templates<span
style='color:#F5844C'> select</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"<span class=SpellE>DataProvider</span>"</span><span
style='color:#000096'>/></span><br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:apply</span>-templates<span
style='color:#F5844C'> select</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"<span class=SpellE>ConnectString</span>"</span><span
style='color:#000096'>/></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'></w:body></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'></w:wordDocument></span><br>
<span style='mso-spacerun:yes'> </span></<span class=SpellE>xsl:template</span>><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:template</span><span
style='color:#F5844C'> match</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"<span class=SpellE>DataProvider</span>"</span><span
style='color:#F5844C'> <span class=SpellE>xml:space</span></span><span
style='color:#FF8040'>=</span><span style='color:#993300'>"preserve"</span><span
style='color:#000096'>></span><br>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><span style='color:#000096'><w:p></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'><w:r></span><br>
<span style='mso-spacerun:yes'> </span><span
style='color:#000096'><w:t></span><<span class=SpellE>xsl:apply</span>-templates<span
style='color:#F5844C'> </span><span style='color:#000096'>/></w:t></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'></w:r></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'></w:p></span><br>
<span style='mso-spacerun:yes'> </span></<span class=SpellE>xsl:template</span>><br>
<br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:template</span><span
style='color:#F5844C'> match</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"<span class=SpellE>ConnectString</span>"</span><span
style='color:#F5844C'> <span class=SpellE>xml:space</span></span><span
style='color:#FF8040'>=</span><span style='color:#993300'>"preserve"</span><span
style='color:#000096'>></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'><w:p></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'><w:r></span><br>
<span style='mso-spacerun:yes'> </span><span
style='color:#000096'><w:t></span><<span class=SpellE>xsl:apply</span>-templates<span
style='color:#F5844C'> </span><span style='color:#000096'>/></w:t></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'></w:r></span><br>
<span style='mso-spacerun:yes'> </span><span style='color:#000096'></w:p></span><br>
<span style='mso-spacerun:yes'> </span></<span class=SpellE>xsl:template</span>><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN style='font-size:9.0pt;font-family:"Courier New";
mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><span class=GramE><span
style='color:darkgreen'><!--</span></span><span style='color:darkgreen'> This
disposes of <span class=SpellE>DataSourceID</span>--></span><br>
<span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl:template</span><span
style='color:#F5844C'> match</span><span style='color:#FF8040'>=</span><span
style='color:#993300'>"<span class=SpellE>DataSourceID</span>"</span><span
style='color:#000096'>/></span><br>
<br>
</xsl:stylesheet></span></p>
</div>
<p>
If we feed that RDL data and transform to mdq.xmlTransform like this:
</p>
<div style="border: solid grey 1px; padding: 5px; height: 260px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>DECLARE</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:teal'>@xml</span> <span style='color:blue'>xml</span><span
style='color:gray'>=</span><span style='color:red'>'</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'><DataSource Name="ReportingDemo"></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'>
<DataSourceID>f34d206b-ca72-4ca6-9d5c-4151cd7eaxxx</DataSourceID></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <ConnectionProperties></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <DataProvider>SQL</DataProvider></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <ConnectString></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> Data Source=ABC;EFG Catalog=XYZ</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </ConnectString></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </ConnectionProperties></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'></DataSource>'</span><span style='font-size:9.5pt;font-family:
Consolas;color:gray'>,</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:teal'>@xslt</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'><xsl:stylesheet version="1.0"</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:output method="xml"
xml:space="default" /></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <!-- This template does all the work --></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:template
match="/DataSource/ConnectionProperties"
xml:space="default"></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:processing-instruction
name="mso-application" xml:space="default"></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'>
<xsl:text>progid="Word.Document"</xsl:text></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </xsl:processing-instruction></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:wordDocument><!-- This creates the word doc
--></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:body></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <!-- These two templates collect the data --></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:apply-templates
select="DataProvider"/></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:apply-templates
select="ConnectString"/></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </w:body></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </w:wordDocument></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </xsl:template></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:template match="DataProvider"
xml:space="preserve"></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:r></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:t><xsl:apply-templates
/></w:t></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </w:r></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </w:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </xsl:template></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:template match="ConnectString"
xml:space="preserve"></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:r></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <w:t><xsl:apply-templates
/></w:t></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </w:r></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </w:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </xsl:template></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <!-- This disposes of DataSourceID--></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <xsl:template match="DataSourceID"/></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'></xsl:stylesheet>'</span><span style='font-size:9.5pt;
font-family:Consolas;color:gray'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:fuchsia'>REPLACE</span><span style='color:gray'>(</span><span
style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>xmlTransform</span><span style='color:gray'>(</span><span
style='color:teal'>@xml</span><span style='color:gray'>,</span><span
style='color:teal'>@xslt</span><span style='color:gray'>),</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:red'>'<?mso-application progid="Word.Document"?>'</span><span
style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:red'>'<?xml version="1.0"
encoding="ISO-8859-1"?></span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:red'> <?mso-application
progid="Word.Document"?>'</span><span style='font-size:9.5pt;
font-family:Consolas;color:gray'>)</span><span style='font-size:9.5pt;
font-family:Consolas'> <span style='color:blue'>AS</span> <span
style='color:teal'>xml_output</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'> </span></p>
</div>
<p>
We get this:
</p>
<div style="border: solid grey 1px; padding: 5px; height: 260px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#8B26C9;mso-ansi-language:EN'><?xml version="1.0"
encoding="utf-8"?></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#8B26C9;
mso-ansi-language:EN'><?<span class=SpellE>mso</span>-application <span
class=SpellE>progid</span>="<span class=SpellE>Word.Document</span>"?></span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:wordDocument</span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:#F5844C;mso-ansi-language:
EN'> </span><span class=SpellE><span lang=EN style='font-size:9.0pt;line-height:
115%;font-family:"Courier New";color:#0099CC;mso-ansi-language:EN'>xmlns:w</span></span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#FF8040;mso-ansi-language:EN'>=</span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:#993300;mso-ansi-language:
EN'>"http://schemas.microsoft.com/office/word/2003/wordml"</span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#000096;mso-ansi-language:EN'>></span><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:
EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:body></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:p></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:r></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:t></span><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:black;mso-ansi-language:EN'>SQL</span></b><span lang=EN style='font-size:
9.0pt;line-height:115%;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'></w:t></span><span lang=EN style='font-size:9.0pt;line-height:115%;
font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:r></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:p></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:p></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:r></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'><w:t></span><b style='mso-bidi-font-weight:normal'><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:black;mso-ansi-language:EN'>Data Source</span></b><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:black;
mso-ansi-language:EN'>=ABC;EFG <b style='mso-bidi-font-weight:normal'>Catalog</b>=XYZ</span><span
lang=EN style='font-size:9.0pt;line-height:115%;font-family:"Courier New";
color:#000096;mso-ansi-language:EN'></w:t></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:black;
mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:r></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:p></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span><br>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span></span><span lang=EN style='font-size:9.0pt;
line-height:115%;font-family:"Courier New";color:#000096;mso-ansi-language:
EN'></w:body></span><span lang=EN style='font-size:9.0pt;line-height:
115%;font-family:"Courier New";color:black;mso-ansi-language:EN'><br>
<span style='mso-spacerun:yes'> </span></span><span lang=EN
style='font-size:9.0pt;line-height:115%;font-family:"Courier New";color:#000096;
mso-ansi-language:EN'></w:wordDocument></span><span style='font-family:
"Arial","sans-serif"'></span></p>
</div>
<p>...which, if we copy/paste into notepad and save as wow.xml, then open with Microsoft Office Word, we get:
<br/><br/>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijhTUWIpxVcMqXlQjbZaG371LLcVV8LNPWSHiE7bQw1_-tCxDnOpVrPryTbNX68HFqwkpaGs3IWTubGReJbikwM-2io5plASu_AEWAPkFjjsNg-QU2b9MxpFXbWY5gzpdvMmSBq0nxKzg/s1600/wow.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijhTUWIpxVcMqXlQjbZaG371LLcVV8LNPWSHiE7bQw1_-tCxDnOpVrPryTbNX68HFqwkpaGs3IWTubGReJbikwM-2io5plASu_AEWAPkFjjsNg-QU2b9MxpFXbWY5gzpdvMmSBq0nxKzg/s320/wow.jpg" /></a>
<h2 class="x">Conclusion</h2>
<p>mdq.xmlTransform is a powerful tool. Period. Today I showed you how to create a basic Word document using just T-SQL and mdq.xmlTransform. Thanks for reading!</p>
<br/>
<p><i><b>--ab</b></i></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 4/29/2013 11:35am (Posted, fixed code issues)</p>
<!--
<h2 class="x">A quick history of the .docx file</h2>
<p>
Back in the day when Word Documents had the .doc extension they were binary files that could be manipulated using Microsoft Office Word or VBA. With the release of Office 2003 Microsoft Office Word documents became XML files that use a <a href="http://msdn.microsoft.com/en-us/library/office/aa212812%28v=office.11%29.aspx" target="_blank" style="color:#0040FF;">WordProcessingML</a> (WordML) XML schema. In Office 2003 .docx files were self-contained XML (text) files. This meant that you could create an MS Word document with a cmd script, a SQL query or anything else that could write text to a file. This opened endless doors. For example, thanks to the XML data type in SQL serve you could load entire Word Docs into a SQL table, use T-SQL to analyze their contents, modify them and create new Documents using T-SQL.
</p>
<h2>.docx becomes a zip file</h2>
<p>
Word documents are still XML files but, starting with Office 2007, . </p>
<h2>A Query that Creates a Word Doc</h2>
-->Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-48449213783376009062013-04-27T16:57:00.001-05:002013-05-01T16:25:51.990-05:00XSLT 2.0 in SQL Server?<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<br/>
<h2 class="x">
...not if you are relying on .NET or MSXML to process your XSLT 2.0 (or 3.0) transforms.
</h2>
<p>Many XSLT enthusiasts have been waiting years to show people what you can do in Microsoft Land (.NET, SQL Server, etc) with XSLT 2.0. MSXML still only supports XSLT 1.0. I went to MSDN's <a href="http://msdn.microsoft.com/en-us/library/ms757858.aspx">Frequently Asked Questions about XSLT</a> page today for an update...
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxNgSQlSA4ikZJeDpglgYPS_q_ypaNxO8IjNARyKWqEQrYcebTcLKqptEFjVeYjnsNWOy-Efd5Q60fihZu9MCpSGiLueeF3pAPAyyi71XQjrx4_J88edUD3uNlE5JK9S-wz1dqR828jWY/s1600/Will+MSXML+support+XSLT+2.png" imageanchor="1" >
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxNgSQlSA4ikZJeDpglgYPS_q_ypaNxO8IjNARyKWqEQrYcebTcLKqptEFjVeYjnsNWOy-Efd5Q60fihZu9MCpSGiLueeF3pAPAyyi71XQjrx4_J88edUD3uNlE5JK9S-wz1dqR828jWY/s320/Will+MSXML+support+XSLT+2.png" />
</a>
<p>The end.</p>
<br/>
<p><b><i>--ab</i></b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 4/27/2013 (Posted)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-74107266002005607712013-04-26T16:41:00.000-05:002013-10-04T19:43:53.399-05:00mdq.XmlTransform -- Part 1: Basic XSLT in SQL Server<style>
a:link {color: #0040ff;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<br/>
<h2 class="x">Intro</h2>
<p>
In my article, <a href="http://xmlsqlninja.blogspot.com/2013/04/missing-clr-part-2-of-2.html" style="color: #0040ff;">Missing CLR Part 2</a>, I called mdq.XmlTransform the “baddest CLR ever” because it adds a ton of new functionality to your SQL Server instance. In this article I will demonstrate some of that functionality. For many, the concept of XML transforms is new so I’ll keep it basic. <i>The purpose of this article is not to sell you on XML transforms but rather to inform you that this technology is available</i>. Hopefully, as more people see the potential of mdq.XmlTransform, more developers will take some of these ideas and run with them.
</p>
<br/>
<h2 class="x">XSLT is about transforming <i>Data</i></h2>
<p>
The conventional wisdom is that XSLT is used to transform XML into something else (such as a new XML file or text). This is only part of the truth. <b><u>XSLT is for transforming data into data; that’s what it does</u></b>. This means that you are not limited to XML as input or as output. XSLT can receive text, numbers (of any kind), dates, XML files, XML fragments, delimited strings, XHTML, HTML, etc, then transform that data, and then return text, numbers, dates, XML, HTML, or pretty much anything else you need.
</p>
<p>
mdq.XmlTransform can do math, parse strings, perform date calculations and almost anything else SQL can do to data. XSLT solves many complex XML problems better than T-SQL's limited XPath & XQuery functionality. It can also solve many problems SQL cannot solve yet and, unlike any Microsoft language, you can create new XSLT functions without creating new CLRs or compiling more code (as would be the case with LINQ and F#).
</p>
<br/>
<h2 class="x">A quick note about performance</h2>
<p>
For many this is a new topic so I am not going to discuss performance considerations yet. There is plenty I can do to make the test code below run much faster but, for the sake of simplicity, I will table that for a future post.
</p>
<br/>
<h2 class="x">Transforming XML Into SQL</h2>
<p>In <a href="http://xmlsqlninja.blogspot.com/2013/04/setting-up-mdqxmltransform.html" style="color: #0040ff;"> Setting up mdq.XmlTransform</a> I showed you how to use XSLT to calulate a factorial. I did this to demonstrate recursion and <a href="http://en.wikipedia.org/wiki/Computability" style="color: #0040ff;">computability</a> using XSLT. Today I will show you the type of task that XSLT does better than regex, padindex or anyting else: <i>transforming XML into SQL.</i>
</p>
<p>To demonstrate, I grabbed the HTML code from <a href="http://www.theonion.com/articles/most-depressing-job-interview-youll-ever-see-curre,32020/" style="color: #0040ff;">this</a> Onion article and structured it similar (kinda) to an RSS XML feed (namespaces and CDATA removed for simplicity). The resulting XML code looks like this:
</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div style="border: solid grey 1px; padding: 5px; height: 200px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><</span><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:#A31515'>articles</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>article</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>name</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>Starbucks
Interview</span>"<span style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span>BURLINGTON, VT—<span class=GramE>Citing</span> the loud screeching
sounds of milk being steamed in the background, the overly crowded setting, and
the fact that a job applicant’s future is being <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span>discussed over a tiny Formica table at a national coffee shop chain, <span
style='color:blue'><</span><span style='color:#A31515'>b</span><span
style='color:blue'>></span>sources can now confirm that <span
style='color:blue'><</span><span class=SpellE><span style='color:#A31515'>i</span></span><span
style='color:blue'>></span>the most depressing job interview you could
possibly imagine is currently <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>being</span> conducted within a <span style='color:blue'><</span><span
style='color:#A31515'>u</span><span style='color:blue'>></span>local
Starbucks.<span style='color:blue'></</span><span style='color:#A31515'>u</span><span
style='color:blue'>></</span><span class=SpellE><span style='color:#A31515'>i</span></span><span
style='color:blue'>></</span><span style='color:#A31515'>b</span><span
style='color:blue'>></</span><span style='color:#A31515'>p</span><span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span>The
breathtakingly sad interview, which many speculate is for an entry-level
position at a small nonprofit organization, was made even more depressing when
reports indicated <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>that</span> the female job applicant in her early to mid-20s seemed
<span style='color:blue'><</span><span class=SpellE><span style='color:#A31515'>i</span></span><span
style='color:blue'> </span><span style='color:red'>style</span><span
style='color:blue'>=</span>"<span style='color:blue'>width:95.5%; </span>"<span
style='color:blue'>></span>visibly eager<span style='color:blue'></</span><span
class=SpellE><span style='color:#A31515'>i</span></span><span style='color:
blue'>></span> to impress her interviewer, a man who conducts his job
interviews at a <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>b</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>style</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>font-family:
comic sans ms /*spelling_....<span class=GramE>?^</span>?^?*/</span>"<span
style='color:blue'>></span>Starbucks<span style='color:blue'></</span><span
style='color:#A31515'>b</span><span style='color:blue'>></span>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>span</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>style</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>height<span
class=GramE>:90.2</span>%;[xxx=%]</span>"<span style='color:blue'>></span>Thanks
for meeting me here,<span style='color:blue'></</span><span
style='color:#A31515'>span</span><span style='color:blue'>></span> said the
middle-aged man, who went on to explain that the <span style='color:blue'><</span><span
class=SpellE><span style='color:#A31515'>i</span></span><span style='color:
blue'>></span>fulfilling<span style='color:blue'></</span><span
class=SpellE><span style='color:#A31515'>i</span></span><span style='color:
blue'>></span> job pays little money and doesn’t include <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>health</span> insurance for at least the first eight months of
employment. <span style='color:blue'><</span><span style='color:#A31515'>span</span><span
style='color:blue'> </span><span style='color:red'>style</span><span
style='color:blue'>=</span>"<span class=SpellE><span class=GramE><span
style='color:blue'>fff</span></span></span><span class=GramE><span
style='color:blue'>%</span></span><span style='color:blue'>[%]</span>"<span
style='color:blue'>></span>It says here you went to Notre Dame. What was
that like<span class=GramE>?<span style='color:blue'><</span></span><span
style='color:blue'>/</span><span style='color:#A31515'>span</span><span
style='color:blue'>></</span><span style='color:#A31515'>p</span><span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>span</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>style</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span class=SpellE><span
style='color:blue'>fff</span></span><span style='color:blue'>%[%]</span>"<span
style='color:blue'>></span>Ultimately, we’re looking for motivated people
who can think fast on their feet and are up to any challenge,<span
style='color:blue'></</span><span style='color:#A31515'>span</span><span
style='color:blue'>></span> the man added while a Josh <span class=SpellE>Groban</span>
song played over a <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=GramE>storewide</span> speaker and <span style='color:blue'><</span><span
style='color:#A31515'>b</span><span style='color:blue'> </span><span
style='color:red'>style</span><span style='color:blue'>=</span>"<span
style='color:blue'>sfty5</span>"<span style='color:blue'>></span>seven
people lined up three feet away to use the bathroom<span style='color:blue'></</span><span
style='color:#A31515'>b</span><span style='color:blue'>></span>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span>Following the interviewer’s description of the <span style='color:blue'><</span><span
style='color:#A31515'>span</span><span style='color:blue'> </span><span
style='color:red'>style</span><span style='color:blue'>=</span>"<span
class=SpellE><span style='color:blue'>color<span class=GramE>:blue</span></span></span><span
style='color:blue'>; address: http://www.x.xxx%50%20%%20%%%</span>"<span
style='color:blue'>></span>rewarding work<span style='color:blue'></</span><span
style='color:#A31515'>span</span><span style='color:blue'>></span> and <span
style='color:blue'><</span><span style='color:#A31515'>span</span><span
style='color:blue'> </span><span style='color:red'>style</span><span
style='color:blue'>=</span>"<span class=SpellE><span style='color:blue'>fff</span></span><span
style='color:blue'>%[%]</span>"<span style='color:blue'>></span>character-building
<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=GramE>opportunities</span>, <span style='color:blue'></</span><span
style='color:#A31515'>span</span><span style='color:blue'>></span> sources
confirmed that the interviewee, who was the only individual in the
establishment wearing professional attire, went on to describe <span
style='color:blue'><</span><span style='color:#A31515'>b</span><span
style='color:blue'>></span>her<span style='color:blue'></</span><span
style='color:#A31515'>b</span><span style='color:blue'>></span> work <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-tab-count:2'> </span>experience
and career aspirations in front of approximately two dozen café patrons and
Starbucks <span style='color:blue'><</span><span style='color:#A31515'>u</span><span
style='color:blue'>></span>employees<span style='color:blue'></</span><span
style='color:#A31515'>u</span><span style='color:blue'>></span>.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span>Reports indicate that the interview reached a <span style='color:blue'><</span><span
style='color:#A31515'>b</span><span style='color:blue'>><</span><span
class=SpellE><span style='color:#A31515'>i</span></span><span style='color:
blue'>></span>new level of despair when <span style='color:blue'></</span><span
class=SpellE><span style='color:#A31515'>i</span></span><span style='color:
blue'>></</span><span style='color:#A31515'>b</span><span
style='color:blue'>></span>a Starbucks patron interrupted the meeting and
asked the job applicant if he could take <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>the</span> unused seat next to her back to his table.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>span</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>style</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span class=SpellE><span
class=GramE><span style='color:blue'>fff</span></span></span><span class=GramE><span
style='color:blue'>%</span></span><span style='color:blue'>[%]</span>"<span
style='color:blue'>></span>Obviously, I’d be thrilled to be involved with an
organization like this,<span style='color:blue'></</span><span
style='color:#A31515'>span</span><span style='color:blue'>></span> said the
interviewee, who had been seen aimlessly milling about the outdoor <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>commercial</span> plaza that houses the coffee shop for
approximately 45 minutes prior to the interview. <span style='color:blue'><</span><span
style='color:#A31515'>span</span><span style='color:blue'> </span><span
style='color:red'>style</span><span style='color:blue'>=</span>"<span
style='color:blue'>width: 90%; <span class=SpellE>f.x</span><span class=GramE>.^</span>^</span>"<span
style='color:blue'>></span>I’m sure you’re seeing a lot of candidates, but I’d
like <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>to</span> think I can bring something to the table that you can’t
get from anyone else.<span style='color:blue'></</span><span
style='color:#A31515'>span</span><span style='color:blue'>></</span><span
style='color:#A31515'>p</span><span style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>span</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>style</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span class=SpellE><span
class=GramE><span style='color:blue'>fff</span></span></span><span class=GramE><span
style='color:blue'>%</span></span><span style='color:blue'>[%]</span>"<span
style='color:blue'>></span>I honestly feel that this could be a great chance
for me to grow both <span style='color:blue'><</span><span style='color:
#A31515'>b</span><span style='color:blue'>></span>personally and
professionally,<span style='color:blue'></</span><span style='color:#A31515'>b</span><span
style='color:blue'>></</span><span style='color:#A31515'>span</span><span
style='color:blue'>></span> added the woman, whose earnestness <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>juxtaposed</span> with the Starbucks employee sweeping around her
feet was, sources noted, absolutely heartbreaking.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span>According to witnesses, while the interview itself was completely and
utterly pathetic, the moments leading up to it were equally depressing, with
the job applicant having <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>difficulty</span> identifying her interviewer when she first
entered the Starbucks and asking another man if he was Jim Oswald. In addition,
when the two ultimately found one another, <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>the</span> awkward small talk they engaged in while waiting in line
to order coffee was reportedly a tragic spectacle, to say the least.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><span style='mso-spacerun:yes'> </span></</span><span
style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span>Other
unbearably bleak and humiliating features of the interview included the amount
of muffin crumbs that needed to be wiped to the ground before the two sat down
and the <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=GramE>homeless</span> people within earshot who were talking incoherently
about a range of subjects.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span><</span><span style='font-size:8.0pt;font-family:Consolas;color:#A31515'>p</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span>Official records also confirmed that job interviews don’t break your <span
class=GramE>f[</span>%removed%]<span class=SpellE>ing</span> heart when they
are conducted in an office as opposed to what is essentially a fast-food
restaurant.<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>p</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></</span><span style='font-size:8.0pt;font-family:Consolas;
color:#A31515'>article</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>></span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'></</span><span style='font-size:8.0pt;
font-family:Consolas;color:#A31515'>articles</span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'>></span></p>
</div>
<p>
I also dirtied up the HTML code to look like the nonsense I often have to deal with (lot's stuff like brackets ([ ]), <b>%</b> signs and other things that make this tricky for T-SQL and Regular Expressions.)
</p>
<br/>
<h2 class="x">The Requirement</h2>
<p>
Let's say you are asked to normalize the XML data posted above. In, other words, the requirement is to take that XML data, strip the tags and then insert the data into a couple tables like so:
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oy42fD0Ul2SW8TUc2HGzZqv3fpHxfhYD5SxUqLm5qo4H-5vjSMCRjKO25kHOJdOTA5kifquDdui3fgm4xYracsCIDQpD5BnCQRZYSKkanAVrapmIQ69v2zGWnZ7JLkUftwGHa_eYwf0/s1600/xml_to_SQL.png" imageanchor="1" >
<img border="1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oy42fD0Ul2SW8TUc2HGzZqv3fpHxfhYD5SxUqLm5qo4H-5vjSMCRjKO25kHOJdOTA5kifquDdui3fgm4xYracsCIDQpD5BnCQRZYSKkanAVrapmIQ69v2zGWnZ7JLkUftwGHa_eYwf0/s320/xml_to_SQL.png" /></a>
<br/>
<p>How would you do that?</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<p>
This would be extremely difficult if not impossible using anything else yet it's quite simple using XSLT. First we create two XSLT functions - one to strip the tags, another to clean up the white space like this:
</p>
<div style="border: solid grey 1px; padding: 5px; height: 450px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:blue'><!--</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:green'> XML to SQL Function </span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>--></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><</span><span class=SpellE><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:stylesheet</span></span></span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'> </span><span class=SpellE><span
style='font-size:8.0pt;font-family:Consolas;color:red'>xmlns:xsl</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>http://www.w3.org/1999/XSL/Transform</span>"<span
style='color:blue'> </span><span style='color:red'>version</span><span
style='color:blue'>=</span>"<span style='color:blue'>1.0</span>"<span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> 
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:output</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>method</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>text</span>"<span
style='color:blue'> </span><span style='color:red'>indent</span><span
style='color:blue'>=</span>"<span style='color:blue'>yes</span>"<span
style='color:blue'> </span><span class=SpellE><span style='color:red'>xml:space</span></span><span
style='color:blue'>=</span>"<span style='color:blue'>preserve</span>"<span
style='color:blue'> </span><span
style='color:blue'> /></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> 
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:template</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>match</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>/articles</span>"<span
style='color:blue'> </span><span class=SpellE><span style='color:red'>xml:space</span></span><span
style='color:blue'>=</span>"<span style='color:blue'>default</span>"<span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>   
</span><span class=GramE><!--</span></span><span style='font-size:8.0pt;
font-family:Consolas;color:green'> need: (1)<span class=SpellE>par_id</span>
(2)title (3)<span class=SpellE>par_nbr</span> (4)content </span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>--></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>   
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:apply</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>-templates</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>select</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>/articles/article</span>"<span
style='color:blue'> /></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> 
</span></</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:template</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> 
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:template</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>match</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>/articles/article</span>"<span
style='color:blue'> </span><span class=SpellE><span style='color:red'>xml:space</span></span><span
style='color:blue'>=</span>"<span style='color:blue'>default</span>"<span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>   
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:value</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>-of</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>select</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>position()</span>"<span
style='color:blue'> /></span>||<span style='color:blue'><</span><span
class=SpellE><span style='color:#2B91AF'>xsl:apply</span></span><span
style='color:#2B91AF'>-templates</span><span style='color:blue'> </span><span
style='color:red'>select</span><span style='color:blue'>=</span>"<span
style='color:blue'>@name</span>"<span style='color:blue'> /></span>||<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-tab-count:2'>                </span><</span><span
class=SpellE><span style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:apply</span></span></span><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>-templates</span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'> </span><span style='font-size:8.0pt;
font-family:Consolas;color:red'>select</span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'>=</span><span style='font-size:8.0pt;
font-family:Consolas'>"<span style='color:blue'>p</span>"<span
style='color:blue'> /></</span><span class=SpellE><span style='color:
#2B91AF'>xsl:template</span></span><span style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> 
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:template</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>match</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>p</span>"<span
style='color:blue'> </span><span class=SpellE><span style='color:red'>xml:space</span></span><span
style='color:blue'>=</span>"<span style='color:blue'>default</span>"<span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>   
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:apply</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>-templates</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> /></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>   
</span><</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:if</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'> </span><span
style='font-size:8.0pt;font-family:Consolas;color:red'>test</span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>position()!=last()</span>"<span
style='color:blue'>></span>||<span style='color:blue'></</span><span
class=SpellE><span style='color:#2B91AF'>xsl:if</span></span><span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> 
</span></</span><span class=SpellE><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>xsl<span class=GramE>:template</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'></</span><span class=SpellE><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:stylesheet</span></span></span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:blue'><!--</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:green'> Normalize Space
Function </span><span style='font-size:8.0pt;font-family:Consolas;color:blue'>--></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><</span><span class=SpellE><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:stylesheet</span></span></span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'> </span><span class=SpellE><span
style='font-size:8.0pt;font-family:Consolas;color:red'>xmlns:xsl</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>=</span><span
style='font-size:8.0pt;font-family:Consolas'>"<span style='color:blue'>http://www.w3.org/1999/XSL/Transform</span>"<span
style='color:blue'> </span><span style='color:red'>version</span><span
style='color:blue'>=</span>"<span style='color:blue'>1.0</span>"<span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-tab-count:1'>        </span><</span><span
class=SpellE><span style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:output</span></span></span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'> </span><span style='font-size:8.0pt;
font-family:Consolas;color:red'>method</span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'>=</span><span style='font-size:8.0pt;
font-family:Consolas'>"<span style='color:blue'>text</span>"<span
style='color:blue'> </span><span style='color:red'>indent</span><span
style='color:blue'>=</span>"<span style='color:blue'>yes</span>"<span
style='color:blue'> </span><span class=SpellE><span style='color:red'>xml:space</span></span><span
style='color:blue'>=</span>"<span style='color:blue'>preserve</span>"<span
style='color:blue'> </span><span
style='color:blue'> /></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-tab-count:1'>        </span><</span><span
class=SpellE><span style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:template</span></span></span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'> </span><span style='font-size:8.0pt;
font-family:Consolas;color:red'>match</span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'>=</span><span style='font-size:8.0pt;
font-family:Consolas'>"<span style='color:blue'>text()</span>"<span
style='color:blue'> </span><span class=SpellE><span style='color:red'>xml:space</span></span><span
style='color:blue'>=</span>"<span style='color:blue'>default</span>"<span
style='color:blue'>></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-tab-count:2'>                </span><</span><span
class=SpellE><span style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:value</span></span></span><span style='font-size:8.0pt;font-family:
Consolas;color:#2B91AF'>-of</span><span style='font-size:8.0pt;font-family:
Consolas;color:blue'> </span><span style='font-size:8.0pt;font-family:Consolas;
color:red'>select</span><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>=</span><span style='font-size:8.0pt;font-family:Consolas'>"<span
style='color:blue'>normalize-space()</span>"<span style='color:blue'>
/></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'><span style='mso-tab-count:1'>        </span></</span><span
class=SpellE><span style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl<span
class=GramE>:template</span></span></span><span style='font-size:8.0pt;
font-family:Consolas;color:blue'>></span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'></</span><span class=SpellE><span
style='font-size:8.0pt;font-family:Consolas;color:#2B91AF'>xsl:stylesheet</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:blue'>><o:p></o:p></span></p>
</div>
<p>Once my XSLT functions were ready I would pass them to mdq.xmlTransform like this:</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:"Courier New";
mso-fareast-theme-font:minor-fareast;}
p.msopapdefault, li.msopapdefault, div.msopapdefault
{mso-style-name:msopapdefault;
mso-style-unhide:no;
mso-margin-top-alt:auto;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Courier New","serif";
mso-fareast-font-family:"Courier New";
mso-fareast-theme-font:minor-fareast;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:2.0in 1.4in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Courier New","serif";}
</style>
<div style="border: solid grey 1px; padding: 5px; height: 450px; width: 560px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-family:
"Arial","sans-serif"'> </span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New";color:blue'>SET</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'>
<span style='color:blue'>NOCOUNT</span> <span style='color:blue'>ON</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue' style="margin-left: 5px;">GO</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(0) PREP: Create output tables:</span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>1. for the article (<span
class=SpellE>article_id</span>, article) </span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>2. for the content (<span
class=SpellE>content_id</span>, <span class=SpellE>article_id</span>, <span
class=SpellE>paragraph_nbr</span>, paragraph)</span><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>IF</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:fuchsia'>OBJECT_<span
class=GramE>ID<span style='color:gray'>(</span></span></span><span
style='color:red'>'<span class=SpellE>tempdb</span>..#articles'</span><span
style='color:gray'>)</span> <span style='color:gray'>IS</span> <span
style='color:gray'>NOT</span> <span style='color:gray'>NULL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>DROP</span> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#articles</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>IF</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:fuchsia'>OBJECT_<span
class=GramE>ID<span style='color:gray'>(</span></span></span><span
style='color:red'>'<span class=SpellE>tempdb</span>..#<span class=SpellE>article_content</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>IS</span> <span
style='color:gray'>NOT</span> <span style='color:gray'>NULL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>DROP</span> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#<span class=SpellE>article_content</span></span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>IF</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:fuchsia'>OBJECT_<span
class=GramE>ID<span style='color:gray'>(</span></span></span><span
style='color:red'>'<span class=SpellE>tempdb</span>..#<span class=SpellE>tmp</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>IS</span> <span
style='color:gray'>NOT</span> <span style='color:gray'>NULL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>DROP</span> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#<span class=SpellE>tmp</span></span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>GO</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>CREATE</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>TABLE</span>
<span style='color:teal'>#articles</span><span style='color:blue'> </span><span
style='color:gray'>(</span><span class=SpellE><span style='color:teal'>article_id</span></span>
<span class=SpellE><span style='color:blue'>int</span></span> <span
style='color:blue'>identity</span> <span style='color:blue'>primary</span> <span
style='color:blue'>key</span><span style='color:gray'>,</span> <span
style='color:teal'>article</span> <span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>100<span style='color:gray'>)</span> <span
style='color:blue'>unique</span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>CREATE</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>TABLE</span>
<span style='color:teal'>#<span class=SpellE>article_content</span></span><span
style='color:blue'> </span><span style='color:gray'>(</span><span class=SpellE><span
style='color:teal'>content_id</span></span> <span class=SpellE><span
style='color:blue'>int</span></span> <span style='color:blue'>identity</span> <span
style='color:blue'>primary</span> <span style='color:blue'>key</span><span
style='color:gray'>,</span> <span class=SpellE><span style='color:teal'>article_id</span></span>
<span class=SpellE><span style='color:blue'>int</span></span> <span
style='color:gray'>NOT</span> <span style='color:gray'>NULL,</span> <span
class=SpellE><span style='color:teal'>p_nbr</span></span> <span class=SpellE><span
style='color:blue'>int</span></span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL,</span> <span style='color:teal'>paragraph</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>1000<span style='color:
gray'>)</span> <span style='color:gray'>NOT</span> <span style='color:gray'>NULL);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>GO</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(1) XML DATA: Get the article in XML format</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DECLARE</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>@xml</span>
<span style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><<span class=GramE>articles</span>></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><article
name="Starbucks Interview"></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>BURLINGTON, VT—<span
class=GramE>Citing</span> the loud screeching sounds of milk being steamed in
the background, the overly crowded setting, and the fact that a job applicant’s
future is being </span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>discussed over a tiny
Formica table at a national coffee shop chain, <b>sources can now confirm
that <<span class=SpellE>i</span>>the most depressing job interview you
could possibly imagine is currently </span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>being</span>
conducted within a <u>local Starbucks.</u></<span class=SpellE>i</span>></b></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span></p></span><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>The breathtakingly sad
interview, which many speculate is for an entry-level position at a small
nonprofit organization, was made even more depressing when reports indicated </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>that</span>
the female job applicant in her early to mid-20s seemed <<span class=SpellE>i</span>
style="width:95.5%; ">visibly eager</<span class=SpellE>i</span>>
to impress her interviewer, a man who conducts his job interviews at a </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><b
style="font-family: comic sans ms /*spelling_....<span class=GramE>?^</span>?^?*/">Starbucks</b>.</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span style="height<span
class=GramE>:90.2</span>%;[xxx=%]">Thanks for meeting me
here,</span> said the middle-aged man, who went on to explain that the
<<span class=SpellE>i</span>>fulfilling</<span class=SpellE>i</span>>
job pays little money and doesn’t include </span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>health</span>
insurance for at least the first eight months of employment. <span
style="<span class=SpellE><span class=GramE>fff</span></span><span
class=GramE>%</span>[%]">It says here you went to Notre Dame. What was
that like<span class=GramE>?<</span>/span></span><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span style="<span
class=SpellE>fff</span>%[%]">Ultimately, we’re looking for motivated
people who can think fast on their feet and are up to any challenge,</span>
the man added while a Josh <span class=SpellE>Groban</span> song played over a </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><span
class=GramE></span> speaker and <b style="sfty5">seven
people lined up three feet away to use the bathroom</b>.</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>Following the
interviewer’s description of the <span style="<span class=SpellE>color<span
class=GramE>:blue</span></span>; address:
http://www.x.xxx%50%20%%20%%%">rewarding work</span> and <span
style="<span class=SpellE>fff</span>%[%]">character-building </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><span
class=GramE>opportunities</span>, </span> sources confirmed that the
interviewee, who was the only individual in the establishment wearing
professional attire, went on to describe <b>her</b> work </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span>experience and
career aspirations in front of approximately two dozen café patrons and
Starbucks <u>employees</u>.</span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>Reports indicate that
the interview reached a <b><<span class=SpellE>i</span>>new level
of despair when </<span class=SpellE>i</span>></b>a Starbucks
patron interrupted the meeting and asked the job applicant if he could take </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>the</span>
unused seat next to her back to his table.</span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span style="<span
class=SpellE>fff</span><span class=GramE>%[</span>%]" >Obviously, I’d
be thrilled to be involved with an organization like this,</span> said
the interviewee, who had been seen aimlessly milling about the outdoor </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>commercial</span>
plaza that houses the coffee shop for approximately 45 minutes prior to the
interview. <span style="width: 90%; <span class=SpellE>f.x</span><span
class=GramE>.^</span>^">I’m sure you’re seeing a lot of candidates, but
I’d like </span><span style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:
"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>to</span>
think I can bring something to the table that you can’t get from anyone
else.</span></span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span style="<span
class=SpellE><span class=GramE>fff</span></span><span class=GramE>%</span>[%]">I
honestly feel that this could be a great chance for me to grow both
<b>personally and professionally,</b></span> added the woman,
whose earnestness </span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>juxtaposed</span>
with the Starbucks employee sweeping around her feet was, sources noted,
absolutely heartbreaking.</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>According to
witnesses, while the interview itself was completely and utterly pathetic, the
moments leading up to it were equally depressing, with the job applicant having
</span><span style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:
"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span><span class=GramE>difficulty</span>
identifying her interviewer when she first entered the Starbucks and asking
another man if he was Jim Oswald. In addition, when the two ultimately found
one another, </span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>the</span>
awkward small talk they engaged in while waiting in line to order coffee was
reportedly a tragic spectacle, to say the least.</span><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>Other unbearably bleak
and humiliating features of the interview included the amount of muffin crumbs
that needed to be wiped to the ground before the two sat down and the </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><span class=GramE>homeless</span>
people within earshot who were talking incoherently about a range of subjects.</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span>Official records also
confirmed that job interviews don’t break your <span class=GramE>f[</span>%removed%]<span
class=SpellE>ing</span> heart when they are conducted in an office as opposed
to what is essentially a fast-food restaurant.</span><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></p></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></article></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'></articles></span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'>'</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New";color:gray'>;</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(2) TRANSFORMS: Create two transforms:</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>1. To parse the XML</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>2. Trims excess space </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DECLARE</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>@<span
class=SpellE>xslt</span></span> <span style='color:blue'>xml</span><span
style='color:gray'>=</span><span style='color:red'>'</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><<span class=SpellE>xsl<span class=GramE>:stylesheet</span></span>
<span class=SpellE>xmlns:xsl</span>="http://www.w3.org/1999/XSL/Transform"
version="1.0"></span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl<span
class=GramE>:output</span></span> method="text"
indent="yes" <span class=SpellE>xml:space</span>="preserve"
/></span><span style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:
"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:1'> </span><<span class=SpellE>xsl<span
class=GramE>:template</span></span> match="/articles" <span
class=SpellE>xml:space</span>="default"></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><span
class=GramE><!--</span> need: (1)<span class=SpellE>par_id</span> (2)title
(3)<span class=SpellE>par_nbr</span> (4)content --></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:apply</span></span>-templates
select="/articles/article" /></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></<span class=SpellE>xsl<span
class=GramE>:template</span></span>></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:1'> </span><<span class=SpellE>xsl<span
class=GramE>:template</span></span> match="/articles/article" <span
class=SpellE>xml:space</span>="default"></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:value</span></span>-of
select="position()" />||<<span class=SpellE>xsl:apply</span>-templates
select="@name" />||</span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:apply</span></span>-templates
select="p" /></span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:1'> </span></<span class=SpellE>xsl<span
class=GramE>:template</span></span>></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:1'> </span><<span class=SpellE>xsl<span
class=GramE>:template</span></span> match="p" <span class=SpellE>xml:space</span>="default"></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:apply</span></span>-templates /><<span
class=SpellE>xsl:if</span> test="position()!=last()">||</<span
class=SpellE>xsl:if</span>></span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:1'> </span></<span class=SpellE>xsl<span
class=GramE>:template</span></span>></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'></<span class=SpellE>xsl<span class=GramE>:stylesheet</span></span>></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'>'</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New";color:gray'>;</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DECLARE</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>@<span
class=SpellE>xslt_clean</span></span> <span style='color:blue'>xml</span><span
style='color:gray'>=</span><span style='color:red'>'</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><<span class=SpellE>xsl<span class=GramE>:stylesheet</span></span>
<span class=SpellE>xmlns:xsl</span>="http://www.w3.org/1999/XSL/Transform"
version="1.0"></span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span><<span class=SpellE>xsl<span
class=GramE>:output</span></span> method="text"
indent="yes" <span class=SpellE>xml:space</span>="preserve"
/></span><span style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:
"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:1'> </span><<span class=SpellE>xsl<span
class=GramE>:template</span></span> match="text()" <span
class=SpellE>xml:space</span>="default"></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:value</span></span>-of
select="normalize-space()"/></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'><span style='mso-spacerun:yes'> </span></<span class=SpellE>xsl<span
class=GramE>:template</span></span>></span><span style='font-size:8pt;
font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'></<span class=SpellE>xsl<span class=GramE>:stylesheet</span></span>></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:red'>'</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New";color:gray'>;</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(3) EXECUTE TRANSFORMS & TRIM SPACE</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>1. Transform the XML
and pass the result tree to <span class=GramE>@<span class=SpellE>val</span></span></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>2. Trim excess space
(free up memory)</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DECLARE</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>@<span
class=SpellE>val</span></span> <span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>7000<span style='color:gray'>)=(</span><span
style='color:blue'>SELECT</span> <span class=SpellE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>XmlTransform</span></span><span
style='color:gray'>(</span><span style='color:teal'>@xml</span><span
style='color:gray'>,</span> <span style='color:teal'>@<span class=SpellE>xslt</span></span><span
style='color:gray'>));</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>SET</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>@<span
class=SpellE>val</span></span><span class=GramE><span style='color:gray'>=(</span></span><span
style='color:blue'>SELECT</span> <span class=SpellE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>XmlTransform</span></span><span
style='color:gray'>(</span><span style='color:teal'>@<span class=SpellE>val</span></span><span
style='color:gray'>,</span> <span style='color:teal'>@<span class=SpellE>xslt_clean</span></span><span
style='color:gray'>));</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>WITH</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span class=SpellE><span
style='color:teal'>article_info</span></span> <span style='color:blue'>AS</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:gray'>(</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'><span style='mso-tab-count:1'> </span><span
style='color:blue'>SELECT</span><span style='mso-tab-count:1'> </span><span
style='color:teal'>sequence</span><span style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:3'></span><span class=GramE style="margin-left: 75pt;"><span
style='color:fuchsia'>RTRIM</span><span style='color:gray'>(</span></span><span
style='color:fuchsia'>LTRIM</span><span style='color:gray'>(</span><span
style='color:teal'>token</span><span style='color:gray'>))</span> <span
style='color:blue'>AS</span> <span style='color:teal'>value</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>FROM</span> <span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>split</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@<span
class=SpellE>val</span></span><span style='color:gray'>,</span> <span
style='color:red'>'||'</span><span style='color:gray'>,</span> 1<span
style='color:gray'>,</span> <span style='color:red'>''</span><span
style='color:gray'>,</span> 0<span style='color:gray'>))</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>SELECT</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>Sequence</span><span
style='color:gray'>,</span> <span style='color:fuchsia'>ROW_<span class=GramE>NUMBER<span
style='color:gray'>(</span></span></span><span style='color:gray'>)</span> <span
style='color:blue'>OVER </span><span style='color:gray'>(</span><span
style='color:blue'>ORDER</span> <span style='color:blue'>BY</span> <span
style='color:teal'>sequence</span><span style='color:gray'>)</span> <span
style='color:teal'>ordinal</span><span style='color:gray'>,</span> <span
style='color:teal'>value</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>INTO</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:teal'>#<span
class=SpellE>tmp</span></span> <span style='color:blue'>FROM</span> <span
class=SpellE><span style='color:teal'>article_info</span></span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(4) PERFORM INSERTS</span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>1. <span class=GramE>articles</span></span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'><span style='mso-tab-count:1'> </span>2. <span class=GramE>content</span>
(with <span class=SpellE>a_id</span> as <span class=SpellE>pk</span> for a, <span
class=SpellE>fk</span> for ac) </span><span style='font-size:8pt;font-family:
Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>INSERT</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>INTO</span>
<span style='color:teal'>#articles</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>SELECT</span> <span
style='color:teal'>value</span> <span style='color:blue'>FROM</span> <span
style='color:teal'>#<span class=SpellE>tmp</span></span> <span
style='color:blue'>WHERE</span> <span style='color:teal'>Sequence</span><span
style='color:gray'>=</span>2<span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>INSERT</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>INTO</span>
<span style='color:teal'>#<span class=SpellE>article_content</span></span><span
style='color:blue'> </span><span style='color:gray'>(</span><span class=SpellE><span
style='color:teal'>article_id</span></span><span style='color:gray'>,</span> <span
class=SpellE><span style='color:teal'>p_nbr</span></span><span
style='color:gray'>,</span> <span class=GramE><span style='color:teal'>paragraph</span></span><span
style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>SELECT</span><span
style='mso-tab-count:1'> </span><span class=GramE><span style='color:fuchsia'>MAX</span><span
style='color:gray'>(</span></span><span class=SpellE><span style='color:teal'>article_id</span></span><span
style='color:gray'>)</span> <span style='color:blue'>OVER </span><span
style='color:gray'>(</span><span style='color:blue'>ORDER</span> <span
style='color:blue'>BY</span> <span class=SpellE><span style='color:teal'>article_id</span></span><span
style='color:gray'>),</span> <span style='color:teal'>Sequence</span><span
style='color:gray'>-</span>2<span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:3'></span><span class=GramE style="margin-left: 76pt;"><span
style='color:teal'>value</span></span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>FROM</span> <span
style='color:teal'>#<span class=SpellE>tmp</span></span><span style='color:
gray'>,</span> <span style='color:teal'>#articles</span> <span
style='color:teal'>a</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'><span
style='mso-tab-count:1'> </span><span style='color:blue'>WHERE</span> <span
style='color:teal'>value</span><span style='color:gray'><></span><span
class=SpellE><span style='color:teal'>a</span><span style='color:gray'>.</span><span
style='color:teal'>article</span></span> <span style='color:gray'>AND</span> <span
style='color:teal'>value</span><span style='color:gray'><></span><span
class=GramE><span style='color:fuchsia'>CAST</span><span style='color:gray'>(</span></span><span
class=SpellE><span style='color:teal'>article_id</span></span> <span
style='color:blue'>AS</span> <span class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>10<span style='color:gray'>))</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>GO</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(5) TESTING: Ensure that data is correct. </span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>SELECT</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:gray'>*</span> <span
style='color:blue'>FROM</span> <span style='color:teal'>#articles</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>SELECT</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:gray'>*</span> <span
style='color:blue'>FROM</span> <span style='color:teal'>#<span class=SpellE>article_content</span></span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>/*************************************************</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>(6) CLEANUP</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:green'>*************************************************/</span><span
style='font-size:8pt;font-family:Consolas;mso-fareast-font-family:"Courier New"'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DROP</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>TABLE</span>
<span style='color:teal'>#<span class=SpellE>tmp</span></span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DROP</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>TABLE</span>
<span style='color:teal'>#articles</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;mso-fareast-font-family:"Courier New";
color:blue'>DROP</span><span style='font-size:8pt;font-family:Consolas;
mso-fareast-font-family:"Courier New"'> <span style='color:blue'>TABLE</span>
<span style='color:teal'>#<span class=SpellE>article_content</span></span><span
style='color:gray'>;</span></span></p>
</div>
<p>... and that's it. </p>
<p>One thing to note is that I used a mdq.split, a CLR splitter function. You don't need a CLR splitter for this; that was the one I was using when I tested this code.</p>
<br/>
<h2 class="x">But what about portability?!?!</h2>
<p>
That's that best part. The XSLT functions I wrote were developed using <b><a href="http://www.w3.org/TR/xslt" style="color: #0040ff;">XSLT 1.0</a>.</b> Not some "flavor" of XSLT, not T-XSLT, XSLT.NET-sharp, PL/XML or DBTransforms2 (I made those up). The XML format is <a href="http://www.w3.org/TR/xml/" style="color: #0040ff;"><b>version 1.0</b></a>. People have been mastering XSLT 1.0 since last century (1999) because it works, it's proven and isn't going anywhere. Yeah, it's a little tricky but this opensource, non-proprietary functional coding goodness is available to you and your SQL instance at no cost <b>and</b> without compiling a new DLL or any new SQL objects. I have done transforms in MYSQL and Oracle using code I originally wrote for SQL Server and did not need to change a single line. That's what portability sounds like to me.
</p>
<br/>
<h2 class="x">Conclusion</h2>
<p>mdq.xmlTransform is a powerful tool; in this post I demonstrated how to use it to <i>transform</i> XML into relational data. As I said earlier, <b>XSLT is about transforming data</b> not just XML. If you don't like XML then think of mdq.xmlTransform as a way to turn your XML into SQL, CSV or anything else. XSLT 3.0 has great support for JSON. More about that in future posts. Thanks for reading! </p>
<br/>
<p><b><i>--ab</i></b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/>
<p>P.S. <u>Two</u> Declarative programming languages, <u>0 loops!</u></p>
<br/><br/>
<p><b>Last Updated:</b> 4/27/2013 (Posted, re-posted with typo's fixed and extra code)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com8tag:blogger.com,1999:blog-8428716005044606822.post-34610966113797957322013-04-26T12:21:00.000-05:002013-12-08T09:54:32.364-06:00mdq.regex CLR Functions -- Part 1: mdq.RegexIsMatch<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2 {font-size: 14pt;}
</style>
<br/>
<h2>
<i>Updated 12/7/2013</i>
</h2>
<p>
I updated this article on 12/7/2013 to include a link to instructions for enabling CLR Integration as and an updated link for the instructions to create the [Microsoft.MasterDataServices.DataQuality] assembly.
</p>
<br/>
<h2>Intro</h2>
<p>
T-SQL is very good at dealing with strings but it does have some shortcomings. The Regular Expressions (Regex) language is elegant, powerful and can be a viable alternative for solving complex string problems. You do not need to use regular expressions to be a great SQL Developer but some basic regex knowledge and a well-written regex CLR are great tools to have in your coding toolbox. SQL Server R2 ships with Master Data Services which includes a number of exciting new Regex CLR functions. You don’t need Master Data Services to use them, just an instance of SQL Server with CLR integration enabled. You also don’t need to be a .NET programmer, have any knowledge of C# or VB or even know much about regular expressions to use these tools.
</p>
<p>
The CLR function I am covering today performs very well and produces a simple query plan. Setup is fast, easy and, best of all, the assembly and <i>each of the mdq CLRs were developed, tested, tuned and QA’d by Microsoft</i>. My only complaint is the lack of documentation. Some of these functions are listed at <a href="http://msdn.microsoft.com/en-us/library/ee633712.aspx" style="color: #0040FF">http://msdn.microsoft.com/en-us/library/ee633712.aspx</a> but for most of the ones that are listed, when you click “details”, you get this:
</p>
<p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihmkSqmG6oh09EPCsEtrNAH-3gT9roXuOX0WqmT1DBfyNRZUxlOSyI_Brm23BraQozDIsPru1ecuRN1F2zrAq9oPkA7weJZWzIXnfuq9S-hxYJIi_9S5AA9wnGOwyybJJJVYCf09cAnJA/s1600/not_available.png" imageanchor="1" >
<img border="1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihmkSqmG6oh09EPCsEtrNAH-3gT9roXuOX0WqmT1DBfyNRZUxlOSyI_Brm23BraQozDIsPru1ecuRN1F2zrAq9oPkA7weJZWzIXnfuq9S-hxYJIi_9S5AA9wnGOwyybJJJVYCf09cAnJA/s320/not_available.png" /></a>
</p>
<br/>
<h2>This topic <u>is</u> available here</h2>
<p>In this series, <b>mdq.regex CLR Functions</b> I will provide examples of how to use:</p>
<ol>
<li>mdq.RegexIsMatch</li>
<li>mdq.RegexMatches</li>
<li>mdq.RegexReplace</li>
<li>mdq.RegexSplit</li>
<li>mdq.RegexExtract</li>
<li>mdq.RegexIsValid</li>
<li>mdq.RegexMask</li>
</ol>
<p>
I started with <b>mdq.RegexIsMatch</b> because it is simple yet very powerful. I am intentionally avoiding the topic of regex programming except to say that it is not that difficult to get the basics down and that there are many great books and websites about the topic. This CLR is easier to learn by example so let’s quickly run through setup and look at some.
</p>
<br/>
<h2>Setup</h2>
<p>To create this function you will need:</p>
<ol>
<li>A schema named, “mdq” in your target DB</li>
<li>CLR integration enabled</li>
<li>The [Microsoft.MasterDataServices.DataQuality] assembly</li>
</ol>
<p>
See <a href="http://technet.microsoft.com/en-us/library/ms131048(v=sql.100).aspx" style="color: #0040FF">this article</a> for details on enabling CLR integration and <a href="http://xmlsqlninja.blogspot.com/p/code-to-create-microsoftmasterdataservi.html" style="color: #0040FF">this article</a> for the steps to create the assembly.
</p>
<br/>
<p>Run the following DDL to create mdq.RegexIsMatch:</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1; border: solid grey 1px; padding: 10px; height: 150px;overflow:auto; background-color: #D8D8D8; width: 520px;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div class="WordSection1">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>CREATE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:blue'>FUNCTION</span> <span
class=SpellE><span style='color:teal'>mdq</span></span><span class=GramE><span
style='color:gray'>.</span><span style='color:teal'>[</span></span><span
class=SpellE><span style='color:teal'>RegexIsMatch</span></span><span
style='color:teal'>]</span><span style='color:gray'>(</span><span
style='color:teal'>@input</span> <span style='color:teal'>[<span class=SpellE>nvarchar</span>]</span><span
style='color:gray'>(</span>4000<span style='color:gray'>),</span> <span
style='color:teal'>@pattern</span> <span style='color:teal'>[<span
class=SpellE>nvarchar</span>]</span><span style='color:gray'>(</span>4000<span
style='color:gray'>),</span> <span style='color:teal'>@mask</span> <span
style='color:teal'>[<span class=SpellE>tinyint</span>]</span><span
style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>RETURNS</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>[bit]</span> <span
style='color:blue'>WITH</span> <span style='color:blue'>EXECUTE</span> <span
style='color:blue'>AS</span> <span style='color:blue'>CALLER</span><span
style='color:gray'>,</span> <span style='color:blue'>RETURNS</span> <span
style='color:gray'>NULL</span> <span style='color:blue'>ON</span> <span
style='color:gray'>NULL</span> <span style='color:teal'>INPUT</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.0pt;font-family:Consolas;color:blue'>AS</span><span style='font-size:9.0pt;
font-family:Consolas'> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.0pt;font-family:Consolas;color:blue'>EXTERNAL</span><span style='font-size:
9.0pt;font-family:Consolas'> <span style='color:teal'>NAME</span> <span
style='color:teal'>[Microsoft.MasterDataServices.DataQuality]</span><span
class=GramE><span style='color:gray'>.</span><span style='color:teal'>[</span></span><span
style='color:teal'>Microsoft.MasterDataServices.DataQuality.SqlClr]</span><span
style='color:gray'>.</span><span style='color:teal'>[RegexIsMatch]</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.0pt;font-family:Consolas;color:blue'>GO<o:p></o:p></span></p>
</div>
<br/><br/>
<h2>mdq.RegexIsMatch Code Samples</h2>
<p>
mdq.RegexIsMatch takes two parameters: a string and a regular expression. It returns a bit based on if the string matches the expression. The examples below are mostly validation. These are all good tools for things like ETL data cleansing tasks or where you are asked to develop a new view, function or stored procedure that produces an Email list with only valid Email addresses.
</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection2
{page:WordSection2; border: solid grey 1px; padding: 10px; height: 450px;overflow:auto; background-color: #D8D8D8;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div class=WordSection2>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>/************************************************</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
style='font-size:8pt;font-family:Consolas;color:green'>RegexMatch</span></span><span
style='font-size:8pt;font-family:Consolas;color:green'> (Scalar UDF) returns
a bit</span><span style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>************************************************/</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>/**** Complex input validation ****/</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--valid US phone number? </span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@phone</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'312-958-8855'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@<span class=SpellE>valid_us_phone</span></span>
<span class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>100<span style='color:gray'>)=</span><span
style='color:red'>'^\(?([0-9]{3})\)?[-. ]?([0-9<span class=GramE>]{</span>3})[-.
]?([0-9<span class=GramE>]{</span>4})$'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@phone</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>phone_nbr</span></span><span
style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@phone</span><span
style='color:gray'>,</span><span style='color:teal'>@valid_us_phone</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span> <span
style='color:blue'>AS</span> <span class=SpellE><span style='color:teal'>is_valid</span></span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--Is this likely to be a valid credit
card?</span><span style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@cc</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'4953129482924435'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@cc</span> <span style='color:blue'>AS</span> <span
style='color:teal'>CC</span><span style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=SpellE><span style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>RegexIsMatch</span></span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:8pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:8pt;font-family:Consolas;color:teal'>@cc</span><span
style='font-size:8pt;font-family:Consolas;color:gray'>,</span><span
style='font-size:8pt;font-family:Consolas;color:red'>'^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13}|(?:2131|1800)\d{11})$'</span><span
style='font-size:8pt;font-family:Consolas;color:gray'>,</span><span
style='font-size:8pt;font-family:Consolas'>0<span style='color:gray'>)</span>
</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:blue'>AS</span> <span class=SpellE><span style='color:teal'>is_valid</span></span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--Is this a valid ZIP code?</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@zip</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'02115-4653'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>@<span class=SpellE>valid_zip</span></span> <span
class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>30<span style='color:gray'>)=</span><span
style='color:red'>'^[0-9]{5,5}([- ]?[0-9]{4,4})?$'</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@zip</span> <span style='color:blue'>AS</span> <span
style='color:teal'>zip</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>RegexIsMatch</span></span><span style='color:gray'>(</span><span
style='color:red'>'02115-4653'</span><span style='color:gray'>,</span><span
style='color:red'>'^[0-9]{5,5}([- ]?[0-9]{4,4})?$'</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span> <span
style='color:blue'>AS</span> <span class=SpellE><span style='color:teal'>is_valid</span></span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--Is this a valid Postcode?</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@pc</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'RG35 2AQ'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@pc</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:teal'>PostCode</span></span><span
style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@pc</span><span
style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:red'>'^([<span class=SpellE>Gg</span>][Ii][<span class=SpellE>Rr</span>]
0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))
{0,1}[0-9][A-<span class=SpellE>Za</span>-z]{2})$'</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:blue'>AS</span> <span class=SpellE><span style='color:teal'>is_valid</span></span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--Is this a valid currency value
(dollar)?</span><span style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@currency</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>40<span style='color:gray'>)=</span><span
style='color:red'>'$33,000,999,888,678.00'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>@<span class=SpellE>is_valid</span></span> <span
class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>50<span style='color:gray'>)=</span><span
style='color:red'>'^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$'</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8pt;font-family:Consolas;color:blue'>SELECT</span><span
style='font-size:8pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span><span style='color:teal'>@currency</span></span></span><span
style='font-size:8pt;font-family:Consolas'> <span style='color:blue'>AS</span>
<span style='color:teal'>currency</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@currency</span><span
style='color:gray'>,</span><span style='color:teal'>@is_valid</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span> <span
style='color:blue'>AS</span> <span style='color:teal'>[valid currency?]</span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--is this a valid currency value
(Sterling)</span><span style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@currency</span><span style='color:gray'>=</span><span
style='color:red'>'&pound<span class=GramE>;34,000.00'</span></span><span
style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>@<span class=SpellE>is_valid</span></span> <span
style='color:gray'>=</span><span style='color:red'>'^\&pound;(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$'</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8pt;font-family:Consolas;color:blue'>SELECT</span><span
style='font-size:8pt;font-family:Consolas'><span style='mso-spacerun:yes'>
</span><span style='color:teal'>@currency</span></span></span><span
style='font-size:8pt;font-family:Consolas'> <span style='color:blue'>AS</span>
<span style='color:teal'>currency</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@currency</span><span
style='color:gray'>,</span> <span style='color:teal'>@is_valid</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span> <span
style='color:blue'>AS</span> <span style='color:teal'>[valid currency?]</span><span
style='color:gray'>;</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--Is there a repeating word?</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8pt;font-family:Consolas'> <span style='color:teal'>@cockney_slang1</span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>25<span style='color:gray'>)=</span><span
style='color:red'>'Apples and stairs stairs'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>@cockney_slang2</span> <span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>25<span style='color:gray'>)=</span><span
style='color:red'>'Apples and pears stairs'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
style='color:teal'>@<span class=SpellE>repeated_words</span></span> <span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>20<span style='color:gray'>)=</span><span
style='color:red'>'\b(\w+)\s+\1\b'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@cockney_slang1</span> <span style='color:blue'>AS</span> <span
style='color:teal'>txt</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@cockney_slang1</span><span
style='color:gray'>,</span><span style='color:teal'>@repeated_words</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span><span
style='mso-tab-count:1'> </span><span style='color:blue'>AS</span> <span
style='color:teal'>[Repeated Words?]</span><span style='color:gray'>;</span> <span
style='color:green'>--YES(1)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@cockney_slang2</span> <span style='color:blue'>AS</span> <span
style='color:teal'>txt</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:teal'>mdq</span><span
style='color:gray'>.</span><span style='color:teal'>RegexIsMatch</span></span></span><span
class=GramE><span style='color:gray'>(</span></span><span style='color:teal'>@cockney_slang2</span><span
style='color:gray'>,</span><span style='color:teal'>@repeated_words</span><span
style='color:gray'>,</span>0<span style='color:gray'>)</span><span
style='mso-tab-count:1'> </span><span style='color:blue'>AS</span> <span
style='color:teal'>[Repeated Words?]</span><span style='color:gray'>;</span> <span
style='color:green'>--NO(0)</span></span></p>
<br/>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>-----------------------------------</span><span
style='font-size:8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--find a word near another word (in
this case 'for' and 'last' 1 or 2 words apart)</span><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:green'>--I grabbed this from Robyn Page and
Phil Factor (simple-talk.com)</span><span style='font-size:8pt;font-family:
Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'> <span class=SpellE><span class=GramE><span
style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>RegexIsMatch</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:red'>'You have failed me
for the last time, Admiral'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:6'> </span><span
style='color:red'>'\<span class=SpellE><span class=GramE>bfor</span></span><span
class=GramE>(</span>?:\W+\w+<span class=GramE>){</span>1,2}?\<span
class=SpellE>W+last</span>\b'</span><span style='color:gray'>,</span>0<span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>[Word near Another Word?]</span><span style='color:gray'>;</span><span
style='color:green'>--1</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8pt;font-family:Consolas'> <span class=SpellE><span class=GramE><span
style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>RegexIsMatch</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:red'>'You have failed me
for what could be the last time, Admiral'</span><span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8pt;font-family:Consolas'><span style='mso-tab-count:6'> </span><span
style='color:red'>'\<span class=SpellE><span class=GramE>bfor</span></span><span
class=GramE>(</span>?:\W+\w+<span class=GramE>){</span>1,2}?\<span
class=SpellE>W+last</span>\b'</span><span style='color:gray'>,</span>0<span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>[Word near Another Word?]</span><span style='color:gray'>;</span><span
style='color:green'>--0</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'></span></p>
</div>
<br/><br/>
<h2>Email Validation</h2>
<p>Lastly, here's and example of how to query a table for valid Email addresses:</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
.MsoPapDefault
{margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
</style>
<div class="WordSection2">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>IF</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:fuchsia'>OBJECT_ID</span><span style='color:gray'>(</span><span
style='color:red'>'tempdb..#customer_email'</span><span style='color:gray'>)</span>
<span style='color:gray'>IS</span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>DROP</span> <span style='color:blue'>TABLE</span> <span
style='color:teal'>#customer_email</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>CREATE</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#customer_email</span>
</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:gray'>(</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>email_id</span> <span style='color:blue'>int</span> <span
style='color:blue'>identity</span> <span style='color:blue'>primary</span> <span
style='color:blue'>key</span><span style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>cust_id</span> <span style='color:blue'>int</span> <span
style='color:gray'>NOT</span> <span style='color:gray'>NULL,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>email</span> <span style='color:blue'>nvarchar</span><span
style='color:gray'>(</span>100<span style='color:gray'>)</span> <span
style='color:blue'>unique</span> <span style='color:gray'>NOT</span> <span
style='color:gray'>NULL);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>INSERT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>INTO</span> <span style='color:teal'>#customer_email</span><span
style='color:blue'> </span><span style='color:gray'>(</span><span
style='color:teal'>cust_id</span><span style='color:gray'>,</span> <span
style='color:teal'>email</span><span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>SELECT</span> 1<span style='color:gray'>,</span><span
style='color:red'>'john.doe@a+++cme. com'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>SELECT</span> 1<span style='color:gray'>,</span><span
style='color:red'>'JohnDoe@somewhere.com'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>SELECT</span> 2<span style='color:gray'>,</span><span
style='color:red'>'Sally.Smith@Microsoft'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>SELECT</span> 3<span style='color:gray'>,</span><span
style='color:red'>'AlChurch@turning.net'</span> <span style='color:blue'>UNION</span>
<span style='color:gray'>ALL</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>SELECT</span> 4<span style='color:gray'>,</span><span
style='color:red'>'JaneDoe@aol.com'</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>GO</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>DECLARE</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@validEmail</span> <span style='color:blue'>nvarchar</span><span
style='color:gray'>(</span>1000<span style='color:gray'>);</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SET</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>@validEmail</span><span style='color:gray'>=</span><span
style='color:red'>'^(([a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]+(\.[a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]+)*){1,64}@(([A-Za-z0-9]+[A-Za-z0-9-_]*){1,63}\.)*(([A-Za-z0-9]+[A-Za-z0-9-_]*){3,63}\.)+([A-Za-z0-9]{2,4}\.?)+){1,255}$'</span><span
style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>WITH</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>emails</span> <span style='color:blue'>AS</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:gray'>(</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>SELECT</span> <span style='color:teal'>ce</span><span
style='color:gray'>.</span><span style='color:teal'>email_id</span><span
style='color:gray'>,</span> <span style='color:teal'>ce</span><span
style='color:gray'>.</span><span style='color:teal'>cust_id</span><span
style='color:gray'>,</span> <span style='color:teal'>email</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>FROM</span> <span style='color:teal'>#customer_email</span> <span
style='color:teal'>ce</span><span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>email_id</span><span style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>cust_id</span><span style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>email</span><span style='color:gray'>,</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>RegexIsMatch</span><span style='color:gray'>(</span><span
style='color:teal'>email</span><span style='color:gray'>,</span> <span
style='color:teal'>@validEmail</span><span style='color:gray'>,</span>0<span
style='color:gray'>)</span> <span style='color:blue'>AS</span> <span
style='color:teal'>[is_valid]</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:teal'>emails</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:8.0pt;font-family:Consolas;
color:blue'>DROP</span><span style='font-size:8.0pt;font-family:Consolas'> <span
style='color:blue'>TABLE</span> <span style='color:teal'>#customer_email</span></span></p>
</div>
<p>... and the results:</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKMgjj0np-MFGUB0ZH0Rlex39iD8rtqSc92w2KwOrGhIn2hvnxbSoqwEktcuh01DB-EXRBJSaZh35kct-OTqOJwUH-OH0akE4oPUHPYXjvfKEsSQqSeDITLq5EAE_qRp9cKF83sl5awZg/s1600/is_valid.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKMgjj0np-MFGUB0ZH0Rlex39iD8rtqSc92w2KwOrGhIn2hvnxbSoqwEktcuh01DB-EXRBJSaZh35kct-OTqOJwUH-OH0akE4oPUHPYXjvfKEsSQqSeDITLq5EAE_qRp9cKF83sl5awZg/s320/is_valid.png" /></a>
<br/><br/>
<h2>Conclusion</h2>
<p>Today we reviewed the steps for setting up and using mdq.RegexIsMatches. It is a powerful CLR that has helped me a great deal in my BI and ETL work. Thanks for reading!</p>
<br/>
<p><b><i>--ab</i></b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 12/27/2013 (minor updates, repaired broken links)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com4tag:blogger.com,1999:blog-8428716005044606822.post-42891170225800242812013-04-21T21:21:00.003-05:002013-12-17T22:28:01.196-06:00Setting up mdq.XmlTransform<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2 {font-size: 14pt;}
</style>
<br/>
<h2 style="margin-top:20px;">Intro</h2>
</p>
Last week I published an article about the <a href="http://xmlsqlninja.blogspot.com/2013/04/missing-clr-part-2-of-2.html" target="_blank">mdq.XmlTransform Scalar CLR function</a> that ships with SQL Server Master Data Services. In this post I will provide instructions for setting it up. The process is fast and painless (less than one minute provided you have the necessary credentials). If you are new to CLRs or XML transforms I suggest testing this on your own PC or in a Sandbox environment. This post won’t be very technical but you should have a basic understanding of SQL Server functions, the XML data type and Common Language Runtime (CLR) functions.
</p>
<br />
<h2>Setting up mdq.XmlTransform</h2>
<p style="margin-top: 0px;">
mdq.XmlTransform will work on any version of SQL Server that supports CLRs. This means it can run on SQL Server 2005 through 2012 (Developer, Express, Enterprise, etc). Setup involves four simple steps: (1) creating the mdq schema, (2) enabling CLR integration, (3) creating the assembly, and then (4) creating mdq.XmlTransform. You can copy/paste the code below into SSMS except for the code in step 2; for that that I provided a link to where you can get the code.
</p>
<p style="margin-top: 30px;"><b>1. Create the mdq schema</b><br/>
See <a href="http://msdn.microsoft.com/en-us/library/ms189462.aspx">this article</a> for more details about creating schemas. The schema name does not need to be named "mdq" for this function to work (I am using "mdq" because everyone else does).
</p>
<p style="margin-top: 30px; margin-bottom: 10px;">
<b>2. Enable CLR integration</b><br/>
To create and execute CLR functions you need CLR integration enabled. You can enable CLR integration by executing the following code:
</p>
<div style="border: solid grey 1px; padding: 10px; height: 120px; width: 540px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<b style="font-weight: normal; color: #DF0101;">sp_configure</b>
<b style="font-weight: normal; color: red;">
'show advanced options'</b>, 1;<br/>
<b style="font-weight: normal; color: blue;">
GO<br/>
RECONFIGURE;<br/>
GO<br/>
</b>
<b style="font-weight: normal; color: #DF0101;">
sp_configure </b>
<b style="font-weight: normal; color: red;">
'clr enabled'</b>, 1;<br/>
<b style="font-weight: normal; color: blue;">
GO<br/>
RECONFIGURE;<br/>
GO
</b>
</div>
<p>
See <a href="http://msdn.microsoft.com/en-us/library/ms131048.aspx" style="color: #0040ff;" target="_blank">this article</a> for more information about CLR integration.
</p>
<p style="margin-bottom: 0px; margin-top: 30px;">
<b>3. Create the MDQ assembly</b><br/>
The code to create the assembly (Microsoft.MasterDataServices.DataQuality) looks like this (truncated for readability):
</p>
<br/>
<div style="border: solid grey 1px; padding: 10px; height: 85px; width: 540px; overflow:auto; background-color: #F2F2F2;font-size: 8pt; font-family: Courier New;">
<b style="font-weight: normal; color: blue;">CREATE ASSEMBLY </b>
[Microsoft.MasterDataServices.DataQuality]<br/>
<b style="font-weight: normal; color: blue;">
AUTHORIZATION</b> dbo
<br/>
<b style="font-weight: normal; color: blue;">
FROM
</b>
0x4D5A90000300000004000000FFFF0000B80000000000000040000000....<br/>
<b style="font-weight: normal; color: blue;">WITH PERMISSION_SET = SAFE<br/>
GO</b>
</div>
<p><b><i>For the complete version of the required code:</i></b>
<a href="http://xmlsqlninja.blogspot.com/p/code-to-create-microsoftmasterdataservi.html" style="color: #0040ff;" target="_blank">Steps to create [Microsoft.MasterDataServices.DataQuality]</a>
<p>
<p style="margin-bottom: 0px; margin-top: 30px;">
<b>4. Create the CLR Function</b><br/>
mdq.XmlTransform is a Scalar CLR. To create it run the following code:
</p>
<br/>
<div style="border: solid grey 1px; padding: 10px; height: 100px; width: 540px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<font color="blue">CREATE FUNCTION</font> mdq.[XmlTransform](@xml <font color="blue">XML</font>, @xslt <font color="blue">XML</font>)<br/>
<font color="blue">
RETURNS NVARCHAR</font>(<font color="#FF00FF;">MAX</font>)
<font color="blue">
WITH EXECUTE AS CALLER, RETURNS
</font>
<font color="darkgray">NULL</font> <font color="blue">ON</font> <font color="darkgray">NULL</font> INPUT<br/>
<font color="blue">AS</font> <br/>
<font color="blue">EXTERNAL NAME</font>
[Microsoft.MasterDataServices.DataQuality].[Microsoft.MasterDataServices.DataQuality.SqlClr].[XmlTransform]<br/>
<font color="blue">GO</font>
</div>
<p>
If you have completed steps 1 through 4 without any errors then you have successfully installed mdq.XmlTransform.</p>
<h2 style="margin-top: 30px;">Using mdq.XmlTransform</h2>
<p>
mdq.XmlTransform takes two parameters: <b>@xml</b> and <b>@xslt</b>. The data type for both is <a href="http://msdn.microsoft.com/en-us/library/ms189887%28v=sql.105%29.aspx">XML</a>. The first parameter, @xml can be an XML document, an XML fragment or an atomic value such as a string, date or any type of number. The second parameter, @xslt, must be an <a href="http://www.w3schools.com/xsl/xsl_transformation.asp">XML Transform</a> (AKA XSLT stylesheet) and it must be version 1.0. The @xml parameter is <b><i>what</i></b> you want to transform, @xslt is <b><i>how</i></b> you want to transform it. XSLT is great for stuffing and splitting strings which means that the both the XML input and XSLT output can be a delimited sequence.
</p>
<p>
For testing I created a query that uses mdq.XmlTransform to calculate a factorial. @xml will be the number we want to calculate, @xslt is that code that will perform the calculation. To keep things simple I am not discussing performance tuning. The query below can be optimized in several ways but, for now, we just want to make sure that the CLR is working. I will address performance in future posts.
mdq.XmlTransform will take the apply @xslt to @xml and return the result.
</p>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div style="border: solid grey 1px; padding: 10px; height: 200px; width: 540px; overflow:auto; background-color: #F2F2F2; font-size: 8pt; font-family: Courier New;">
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>/************************************************************</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>Created by: Alan Burstein</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>Created on: 4/22/2013</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>How it works:</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>@xml can be xml, an xml fragment or an
atomic value such </span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:green'>as</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:green'> a string, number or a
delimited sequence.</span><span style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>@<span class=SpellE>xslt</span> needs
to be a well-formed XML style sheet (XSLT).</span><span style='font-size:8.0pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span
class=GramE><span style='font-size:8.0pt;font-family:Consolas;color:green'>mdq.XmlTransform</span></span></span><span
style='font-size:8.0pt;font-family:Consolas;color:green'> will take the apply @<span
class=SpellE>xslt</span> to @xml</span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span class=GramE><span
style='font-size:8.0pt;font-family:Consolas;color:green'>and</span></span><span
style='font-size:8.0pt;font-family:Consolas;color:green'> return the result.</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>This will work for numbers up to 170</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:green'>************************************************************/</span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@xml</span> <span
style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'17'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>DECLARE</span><span style='font-size:
8.0pt;font-family:Consolas'> <span style='color:teal'>@<span class=SpellE>xslt</span></span>
<span style='color:blue'>xml</span><span style='color:gray'>=</span><span
style='color:red'>'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><<span class=SpellE>xsl<span
class=GramE>:stylesheet</span></span> version="1.0" <span
class=SpellE>xmlns:xsl</span>="http://www.w3.org/1999/XSL/Transform"></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><<span
class=SpellE>xsl<span class=GramE>:template</span></span> match="/"
name="factorial"></span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><span
style='mso-spacerun:yes'> </span><<span class=SpellE>xsl<span class=GramE>:param</span></span>
name="number" select="text()"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><span
style='mso-spacerun:yes'> </span><<span class=SpellE><span class=GramE>xsl:</span>choose</span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:when</span></span> test="$number &<span
class=SpellE>lt</span>;= 1">1</<span class=SpellE>xsl:when</span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><<span
class=SpellE>xsl<span class=GramE>:otherwise</span></span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><span
style='mso-spacerun:yes'> </span><<span class=SpellE>xsl<span class=GramE>:variable</span></span>
name="<span class=SpellE>recursive_result</span>"></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><<span
class=SpellE>xsl<span class=GramE>:call</span></span>-template
name="factorial"></span><span style='font-size:8.0pt;font-family:
Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span><span
style='mso-spacerun:yes'> </span><<span class=SpellE>xsl<span class=GramE>:with</span>-param</span>
name="number" select="$number - 1"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:3'> </span></<span
class=SpellE>xsl<span class=GramE>:call</span></span>-template></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><span
style='mso-spacerun:yes'> </span></<span class=SpellE>xsl<span class=GramE>:variable</span></span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span><span
style='mso-spacerun:yes'> </span><<span class=SpellE>xsl<span class=GramE>:value</span></span>-of
select="$number * $<span class=SpellE>recursive_result</span>"/></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:2'> </span></<span
class=SpellE>xsl<span class=GramE>:otherwise</span></span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span><span
style='mso-spacerun:yes'> </span></<span class=SpellE>xsl<span class=GramE>:choose</span></span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'><span style='mso-tab-count:1'> </span></<span
class=SpellE>xsl<span class=GramE>:template</span></span>></span><span
style='font-size:8.0pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:red'></<span class=SpellE>xsl<span
class=GramE>:stylesheet</span></span>>'</span><span style='font-size:8.0pt;
font-family:Consolas'> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
8.0pt;font-family:Consolas;color:blue'>SELECT</span><span style='font-size:
8.0pt;font-family:Consolas'> <span class=SpellE><span class=GramE><span
style='color:teal'>mdq</span><span style='color:gray'>.</span><span
style='color:teal'>XmlTransform</span></span></span><span class=GramE><span
style='color:gray'>(</span></span><span style='color:teal'>@<span class=SpellE>xml<span
style='color:gray'>,</span>@xslt</span></span><span style='color:gray'>)</span>
<span style='color:blue'>AS</span> <span style='color:teal'>factorial<o:p></o:p></span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'><o:p> </o:p></span></p>
</div>
<br/><br/>
<h2>Summary</h2>
<p>
In this post we reviewed the steps for setting up and using mdq.XmlTransform. Come back soon for more examples of what you can do with this bad dog. Thanks for reading!
</p>
<br/>
<p><b><i>--ab</i></b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 11/13/2013 (added example)</p>
<!--@xslt This is better explained through example. In the code below I create two SQL variables: @numbers and @split_and_add_numbers. @numbers represents two numbers........... -->
</p>
<!--
<h2>Food For Thought</h2>
<p>
I am already working on follow-up posts with examples of each of the items below. Now that you have mdq.XmlTransform installed you can quickly create:
</p>
<ol>
<li>Functions that take other functions as <i>parameters</i></li>
-->
<!-- use the articles example -->
<!-- <li>Functions that return other functions as <i>output</i></li> -->
<!-- the article example with multiple articles -->
<!--<li>An all-in-one CLR</li> -->
<!-- with a SQL table a splitter, a splitter based on a pattern & a factorial -->
<!--<li>SQL queries that defer work to client applications</li> -->
<!-- do an example that sends an XML file and a transform -->
<!--<li>New functions on the fly using a CTE</li> -->
<!-- use a cte to build the XSLT function -->
<!--<li>Functions that solve many XML problems better than any you have ever seen</li> -->
<!-- use the articles example -->
<!--<li>New SQL functions like substring-before, substring-after, a REPLACE function based on <i>patterns</i></li> -->
<!--</ol> -->
<!--Does this open up any new possibilities? -->Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com5tag:blogger.com,1999:blog-8428716005044606822.post-58879195924797462522013-04-17T22:49:00.000-05:002013-04-19T19:04:20.898-05:00O'Reilly Book Covers<h2>How do you guys come up with these animals?</h2>
<p>O'Reilly publishes computer books and, on the cover, there's usually a picture of some completely random animal that has nothing to do with the book. What is up with that?!? I was thinking about this today while going through some old books and took a picture to show you what I mean.</p>
<p>
<b>Click to zoom:</b><br/>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF-ae8omjhaNx32hlqJr89R2ud6QrgZyauuL31RfUx37DN_Sa6v1BI4q59FqpfqnAaosxoYNoVMu2Z06-Nj90pstYCzkuz_jvQUha7HWldqujOZYs7kj0wie1jhvrhpOppS-dD5r6H_mQ/s1600/20130417_181448.jpg" imageanchor="1" alt="Click to Zoom">
<img style="border: solid grey 1px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF-ae8omjhaNx32hlqJr89R2ud6QrgZyauuL31RfUx37DN_Sa6v1BI4q59FqpfqnAaosxoYNoVMu2Z06-Nj90pstYCzkuz_jvQUha7HWldqujOZYs7kj0wie1jhvrhpOppS-dD5r6H_mQ/s320/20130417_181448.jpg" /></a>
</p>
<p><b>--ab</b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 4/19/2013 (code cleanup)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-85867083785629930602013-04-16T21:55:00.001-05:002013-04-21T22:05:54.398-05:00Database Administrator: #2 Fastest Growing Job in America<h2>Rise of the DBA</h2>
<p>According to the Department of Labor Database Administrators will see 31% growth in their field between 2010 and 2020.</p>
<p><a href="http://education.yahoo.net/articles/six_fast-growing_jobs.htm?kid=1LFZ5" style="color: #0040FF;">Six Fast-Growing Careers Taking Over the U.S. - Yahoo! Education</a></p>
<p style="margin-top: 5px;">
<a href="http://therealdeal.com/wp-content/uploads/2013/01/uparrow.jpg" imageanchor="1" ><img border="0" src="http://therealdeal.com/wp-content/uploads/2013/01/uparrow.jpg" style="height:220px;" /></a>
</p>
<p><b>--ab</b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 4/21/2013 (code cleanup, added pic)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com35tag:blogger.com,1999:blog-8428716005044606822.post-75338745629364920242013-04-14T17:55:00.000-05:002013-12-07T23:41:01.803-06:00Missing CLR -- Part 2 of 2: mdq.xmlTransform<br/>
<h2 Style="font-size: 14pt; font-weight:bold;">Intro</h2>
<p>
In my previous <a href="http://xmlsqlninja.blogspot.com/2013/04/missing-clr-part-1.html" style="color: #0040FF">post</a> I raised the question of a possible missing CLR on MSDN's <a href="http://msdn.microsoft.com/en-us/library/ee633712.aspx" style="color: #0040FF">Master Data Services CLR Functions</a> page. It turns out that there <b><i>was</i></b> a missing CLR (there are actually <i>quite a few</i> new CLRs not listed but this is a topic for another time). The missing guy I'm talking about is, IMHO, <b><i>the</i> baddest CLR ever. </b> Before I talk about this nasty new CLR let me, first, say a couple things about <i>functional programming</i>; it will matter in a moment. I promise.
</p>
<br/>
<h2 Style="font-size: 12pt;">Functional Programming</h2>
<p>
<a href="http://en.wikipedia.org/wiki/Functional_programming" style="color: #0040FF">Functional Programming</a> (FP) is very power full and elegant stuff. At <a href="http://en.wikipedia.org/wiki/Functional_programming" style="color:#0040FF">Wikipedia</a>, functional programming is defined as follows (emphasis mine):
</p>
<p style="margin-left: 20px; margin-right: 10px;">
<i>In computer science, functional programming is a <b>programming paradigm that treats computation as the evaluation of mathematical functions</b> and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state.[1] Functional programming has its roots in lambda calculus, a formal system developed in the 1930s to investigate computability, the Entscheidungsproblem, function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus.</i>
</p>
<p>
In the MSDN article I posted <a href="http://xmlsqlninja.blogspot.com/2013/04/functional-programming-vs-imperative.html" style="color: #0040FF">earlier</a> today: <a href="http://msdn.microsoft.com/en-us/library/bb669144.aspx" style="color: #0040FF">Functional Programming vs. Imperative Programming</a> FP is described a little differently (emphasis mine):
</p>
<p style="margin-left: 20px; margin-right: 10px;">
<i>The functional programming paradigm was explicitly created to support a <b><u>pure functional approach</u> to problem solving</b>. Functional programming is a form of declarative programming.</i>
</p>
<p>
The article continues by discussing <b><i>Functional Programming Using XSLT</i></b>.
</p>
<p style="margin-left: 20px; margin-right: 10px;">
<i>Many XSLT developers are familiar with the pure functional approach. The most effective way to develop an XSLT style sheet is to treat each template as an isolated, composable transformation.The order of execution is completely de-emphasized. XSLT does not allow side effects (with the exception that escaping mechanisms for executing procedural code can introduce side effects that result in functional impurity).</i>
</p>
<br/>
<h2 Style="font-size: 12pt;">Is XSLT a Functional Programming Language?</h2>
<p>
There are some that still argue that XSLT is not a functional programming language. I disagree. In a November, 2001 article by Dimitre Novatchev titled,
<i><a href="http://fxsl.sourceforge.net/articles/FuncProg/Functional%20Programming.html" style="color: #0040FF">The Functional Programming Language XSLT - A proof through examples</a></i> Novatchev demonstrates beyond any doubt that XSLT <i><b>is</b></i> a functional programming language by implementing many major functional programming design patterns. There were 35 functions in total that illustrated the usefulness of higher order functions using XSLT 1.0.
</p>
<br/>
<h2 Style="font-size: 12pt;">And the missing CLR is…</h2>
<p>
So, why all the blather about functional programming? Because the mysterious magical missing CLR is <b><u>mdq.XmlTransform</u></b>, you can read more about it <a href="http://www.sqlservercentral.com/articles/MDS/75932/" style="color:#0040FF">here</a>. Why is this thing "the baddest CLR ever?" <b>mdq.XmlTransform is the baddest CLR ever because it does not just solve a specific problem, it extends your SQL server instance to support a whole new, super-powerful functional programming language. Furthermore, <i>it does so <u>without requiring you to compile any new code for each new function</u></i></b>. Now you can implement pure functions in SQL server: functions where tasks can be executed asynchronously and where the order of execution <i>can</i> be completely de-emphasized. All this using a well-tested, reliable and proven open-source language which has been used with great success since last century. Not too Kludgy, eh?
</p>
<p>
The other bonus is that this bad dog was developed, tested, QA’d and deployed by Microsoft (so you know it's good!). It's so good in fact that, beginning with SQL Server 2008 R2, it ships with Microsoft's new EIM software: <a href="http://msdn.microsoft.com/en-us/sqlserver/ff943581.aspx" style="color: #0040FF">Master Data Services</a> and <a href="http://msdn.microsoft.com/en-us/library/ff877917.aspx" style="color: #0040FF">Data Quality Services</a>. This CLR is solid, trustworthy and does more for your SQL server instance than any CLR I have ever seen.
</p>
<p>
Come back soon for some examples of what you can do with this guy and thanks for reading.
</p>
<br/>
<p>
<span style="color: #424242;">Click to enlarge: </span><br/>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicBbdwuU05_BbIag1O0oyYnmNox4RxoEisjd3ebkCru3_oEIoN5ybz4vbsNaqAMj5c_DD-h9C29PRZbbGFh6i5JuAlRp5KfCM8MDafUHkn4jU4YrKf6XctycPzslK0RUjpzTyFDE1dpVI/s1600/nasty2.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicBbdwuU05_BbIag1O0oyYnmNox4RxoEisjd3ebkCru3_oEIoN5ybz4vbsNaqAMj5c_DD-h9C29PRZbbGFh6i5JuAlRp5KfCM8MDafUHkn4jU4YrKf6XctycPzslK0RUjpzTyFDE1dpVI/s320/nasty2.png" /></a>
</p>
<p><b><i>--ab</i></b></p>
<p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg"
alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
style="height: 100px;" />
</p>
<br/>
<p><b>Last Updated:</b> 4/19/2013 (code cleanup)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com1tag:blogger.com,1999:blog-8428716005044606822.post-70856230651678515582013-04-14T12:16:00.002-05:002013-05-01T19:07:16.668-05:00Functional Programming vs Imperative Programming (MSDN)<style>
a:link {color: #013ADF;}
a:visited {color: #013ADF;}
a:hover {color: #2E9AFE; text-decoration: underline;}
h2.x {font-size: 14pt;}
</style>
<br/>
<p>Below is a great article about functional programming using Microsoft Products. I don't agree with the endorsement of F# or LINQ over XSLT. It is worth noting, however, that <i>F# and LINQ are Microsoft products</i> whereas XSLT is opensource, not married to any platform and is older and more tested than F# and LINQ combined. I would not want people using XSLT if I were Microsoft either. That said, <b>I am <u>extremely pleased</u> to read about Microsoft's endorsement of functional programming!</b> You will be too when I get back to you about that missing CLR. ;)
</p>
<p>
<a href="http://msdn.microsoft.com/en-us/library/bb669144.aspx" style="color:#2E64FE;">Functional Programming vs. Imperative Programming (MSDN 2013)</a>
</p>
<br/>
<p><b>--ab</b></p>
<img alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" class="jpg" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg" title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')" style="height:100px;" />
<br/><br/>
<p><b>Last Updated:</b> 5/1/2013 (formatting)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-44922941936598487752013-04-13T18:31:00.000-05:002013-04-19T19:50:05.673-05:00Dodd-Frank#<h2>Intro</h2>
<p>
I promise not to mix politics into this blog and I don't normally post poetry but, as someone who once worked at a Big Bank, I enjoyed this and thought it was worth posting.
</p>
<p style="font-style: italic; margin-left: 20px; margin-right: 30px;">
<i style="font-family: Courier New, Courier, arial; color: grey; margin-left: -4px;"><Dodd-Frank#></i> <br/>
I used to write code at the Bank <br/>
...and then along came dodd-frank <br/>
...and then my job really stank <br/>
...I no longer write code at the Bank <br/><br/>
--anonymous <br/>
<i style="font-family: Courier New, Courier, arial; color: grey; margin-left: -4px;"></Dodd-Frank#></i>
</p>
<br/>
<p><b><i>--ab</i></b></p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg"
alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
style="height: 100px;" />
</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-59224265751593296362013-04-13T03:22:00.000-05:002013-04-19T19:53:13.938-05:00Missing CLR -- Part 1 of 2<h2>Intro</h2>
<p>
Master Data Services ships with some nice, new common language runtime functions; click this <a href="http://msdn.microsoft.com/en-us/library/ee633712.aspx">link</a> for more details. My question is this: take a look at the screenshot below; did MDS ship with only 11 CLRs? ...or did the folks at Microsoft forget to include one when they prepared this list?
</p>
<p>
Click to zoom:
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiV4HFTYadHynTjqty5rxQNKmVZTk0j5bntQ_7cqRca1_TkOEwtJ0RdErQkD2LyAocqTOqZvNN0U3kGoRBbmfYS9_lNunmC9tUC8N22MV3gdnp6ktM_FZxrJVU2neiTUuPZ8o1Kq9IUms/s1600/nasty.png" imageanchor="1" ><img border="1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiV4HFTYadHynTjqty5rxQNKmVZTk0j5bntQ_7cqRca1_TkOEwtJ0RdErQkD2LyAocqTOqZvNN0U3kGoRBbmfYS9_lNunmC9tUC8N22MV3gdnp6ktM_FZxrJVU2neiTUuPZ8o1Kq9IUms/s320/nasty.png" /></a>
<p>
Check back tomorrow.
</p>
<br/>
<p><b><i>--ab</i></b></p>
<p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg"
alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
style="height: 100px;" />
</p>
<br/>
<p><b>Last Updated:</b> 4/19/2013 (code cleanup)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-16990786346503179182013-04-09T19:32:00.002-05:002013-05-01T16:24:23.569-05:00The Tally Table (and a nifty factorial function)<p>
I have not posted anything since September and with good reason. Last year to promote this blog, I began participating in some online SQL forums and, long story short, realized that I needed to get on board with set-based SQL development. I always thought my code was slick until I did a deep dive into this whole “set-based thing.” Since then I have seen time and time again that <b><i>the set-based solution almost always dramatically outperforms its iterative counter-part, often with cleaner, more elegant code</i></b>.
</p>
<p>
Which brings me to The Tally Table. I’ve also heard it referred to as a “numbers table” or “auxiliary table of numbers”. I call it a tally table to give credit where credit is due. What you call it is not important, getting rid of those loops and cursors is. Nothing has helped me do that more than this article: <a href="http://www.sqlservercentral.com/articles/T-SQL/62867/" style="color: #013ADF" />
The "Numbers" or "Tally" Table: What it is and how it replaces a loop</a>
</p>
<p>
In future posts you will see many tricks with the tally table. For now, here's a nifty little factorial script.
</p>
<h2>Set-Based Factorial Query:</h2>
<br/>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
.MsoPapDefault
{margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1; width: 500px; padding: 10px; border: solid grey 1px; background-color:#FAFAFA;}
-->
</style>
<div class=WordSection1>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>DECLARE</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:teal'>@n</span> <span style='color:blue'>int</span><span
style='color:gray'>=</span>5<span style='color:gray'>,</span> <span
style='color:green'>-- @n is the number to aggregate</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>
<span style='color:teal'>@factorial</span> <span style='color:blue'>bigint</span><span
style='color:gray'>=</span>1<span style='color:gray'>; </span><span
style='color:green'>-- set @factorial to 1</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>WITH</span><span style='font-size:9.5pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:teal'>t</span><span style='font-size:9.5pt;font-family:Consolas;
color:gray'>(</span><span style='font-size:9.5pt;font-family:Consolas;
color:teal'>n</span><span style='font-size:9.5pt;font-family:Consolas;
color:gray'>,</span><span style='font-size:9.5pt;font-family:Consolas;
color:teal'>f</span><span style='font-size:9.5pt;font-family:Consolas;
color:gray'>)</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:blue'>AS </span><span style='color:gray'>(</span><span
style='color:blue'>SELECT</span> <span style='color:blue'>TOP</span><span
style='color:gray'>(</span><span style='color:teal'>@n</span><span
style='color:gray'>)</span> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>
<span style='color:fuchsia'>ROW_NUMBER</span><span style='color:gray'>()</span>
<span style='color:blue'>OVER </span><span style='color:gray'>(</span><span
style='color:blue'>ORDER</span> <span style='color:blue'>BY </span><span
style='color:gray'>(</span><span style='color:blue'>SELECT</span> <span
style='color:gray'>NULL))+</span>1<span style='color:gray'>,</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>
<span style='color:fuchsia'>ROW_NUMBER</span><span style='color:gray'>()</span>
<span style='color:blue'>OVER </span><span style='color:gray'>(</span><span
style='color:blue'>ORDER</span> <span style='color:blue'>BY </span><span
style='color:gray'>(</span><span style='color:blue'>SELECT</span> <span
style='color:gray'>NULL))</span> <span style='color:gray'>*</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'> </span><span style='font-size:9.5pt;font-family:Consolas;
color:gray'>(</span><span style='font-size:9.5pt;font-family:Consolas;
color:fuchsia'>ROW_NUMBER</span><span style='font-size:9.5pt;font-family:Consolas;
color:gray'>()</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:blue'>OVER </span><span style='color:gray'>(</span><span
style='color:blue'>ORDER</span> <span style='color:blue'>BY </span><span
style='color:gray'>(</span><span style='color:blue'>SELECT</span> <span
style='color:gray'>NULL))+</span>1<span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>
<span style='color:blue'>FROM</span> <span style='color:green'>sys</span><span
style='color:gray'>.</span><span style='color:green'>all_columns</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'>
<span style='color:blue'>UNION</span> <span style='color:blue'>SELECT</span> 1<span
style='color:gray'>,</span>1<span style='color:gray'>)</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:teal'>@factorial</span><span style='color:gray'>=</span><span
style='color:teal'>@factorial</span><span style='color:gray'>*</span><span
style='color:teal'>f</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>FROM</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:teal'>t</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>WHERE</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:teal'>n</span><span style='color:gray'>%</span>2<span
style='color:gray'>=</span><span style='color:teal'>@n</span><span
style='color:gray'>%</span>2<span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue'>SELECT</span><span style='font-size:9.5pt;font-family:Consolas'> <span
style='color:teal'>@n</span> <span style='color:blue'>AS</span> <span
style='color:teal'>n</span><span style='color:gray'>,</span> <span
style='color:teal'>@factorial</span> <span style='color:blue'>AS</span> <span
style='color:teal'>factorial</span><span style='color:gray'>;</span></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'> </span></p>
</div>
<p style="font-weight: bold;">
--ab
</p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg"
alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
style="height: 100px;" />
</p>
<h2>Further Reading:</h2>
<ul>
<li>
<a href="http://sqlmag.com/sql-server/virtual-auxiliary-table-numbers" style="color: #013ADF">
Virtual Auxiliary Table of Numbers
</a> (Itzik Ben-Gan)
</li>
<li>
<a href="http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/you-require-a-numbers-table.aspx" style="color: #013ADF">
You REQUIRE a Numbers table!
</a> (Adam Machanic)
</li>
<li>
<a href="http://www.sqlservercentral.com/articles/T-SQL/97910/" style="color: #013ADF">
A Simple Formula to Calculate the ISO Week Number - SQLServerCentral
</a> (Jeff Moden)
</li>
<li>
<a href="https://www.simple-talk.com/sql/database-administration/creative-solutions-by-using-a-number-table" style="color: #013ADF">
Creative Solutions by Using a Number Table
</a> (Greg Larsen)
</li>
<li>
<a href="http://archive.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=NumbersTable" style="color: #013ADF">
How to Create and Use A Numbers Table
</a> (msdn)
</li>
</ul>
<br/>
<p><b>Last Updated:</b> 4/19/2013 (code cleanup)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com4tag:blogger.com,1999:blog-8428716005044606822.post-68772241753638671242013-04-07T23:45:00.003-05:002013-04-19T17:05:40.337-05:00Checking In<p>
It's been quite some time since my last post, what's up with that? I've been busy, that's all. Anyhow, please note the updates to the site and my new logo. I have a ton of content under review that I can't wait to post. Come back soon! Peace.
</p>
<br/>
<p><b>--ab</b></p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg"
alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
style="height: 100px;" />
</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-78862791087138889792012-09-06T17:50:00.000-05:002013-04-19T20:30:17.664-05:00XML and NASA<p style="margin-left: 20px;">
<i>"A key to addressing the data heterogeneity issue is the adoption and enforcement of standards across information systems. While <b>XML</b> is clearly emerging to be the <b>lingua franca</b> for databases and internet systems, it is encouraging
to see the enforcement of standards even at the level of Microsoft® Word and Microsoft® Powerpoint® documents"</i>
<br />-- National Aeronautics and Space Administration (NASA)
</p>
<p>
XML is so wonderful that I created this blog to tell you about it. You don't need to be a Rocket Scientist to understand how powerful XML is but apparently it doesn't hurt. Recently I Googled "<i>NASA Business Intelligence</i>"
and found an article posted on <a href="http://Stanford.edu" target="_blank">stanford.edu</a> titled, <a href="http://infolab.stanford.edu/~maluf/papers/ieeepmt06.pdf" target="_blank">The NASA Program Management Tool: A New Vision in Business Intelligence.</a>
So, what technology sits at the core of Business Intelligence (BI) at NASA? An elite team of Data Scientists from MIT, Berkeley, Cornell and Stanford determined that only XML would do. Of course.
Below is a link to the article but let me share a few highlights:
</p>
<p style="margin-left: 20px;">
<i>This paper describes a novel approach to business intelligence and program management for large technology enterprises like the U.S. National Aeronautics and Space Administration (NASA). Two key distinctions of the approach are that 1) standard business documents are the user interface, and 2) a “schema-less” XML database enables flexible integration of technology information for use by both humans and machines in a highly dynamic environment. The implementation utilizes patent-pending NASA software called the NASA Program Management Tool (PMT) and its underlying “schema-less” XML database called Netmark.</i>
</p>
<p style="margin-left: 20px;">
<i>...a 'schema-less' XML database enables integration and query-based document composition, eliminating the need for database administration by automating the integration of information that have diverse schemas.</i>
</p>
<p style="margin-left: 20px;">
<i>...Netmark supports the XML standard for metadata and information interchange thus making it an open system that is interoperable with a wide variety of other information systems and tools.</i>
</p>
<p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5o7kpsIHKpko5-YfYS_LThoTpj0zm0-92XIUOU5MrugK-QzJrWba0NlBHczrZAotDDOOu1PrvZ1xJQhKRM3aWUbjb4qnHLhSkZwY_hhm4w1QTILuSPSuvdbWmqTVW65RW5ICpILQ-09I/s1600/NASAXML_1.png" imageanchor="1" style=""><img border="0" height="290" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5o7kpsIHKpko5-YfYS_LThoTpj0zm0-92XIUOU5MrugK-QzJrWba0NlBHczrZAotDDOOu1PrvZ1xJQhKRM3aWUbjb4qnHLhSkZwY_hhm4w1QTILuSPSuvdbWmqTVW65RW5ICpILQ-09I/s400/NASAXML_1.png" /></a>
</p>
<p>
It is worth noting that NASA uses the <b>Xalan XSLT processor</b> to transform their XML. Nice.
</p>
<p>--ab</p>
<h3>Additional Reading:</h3>
<p>
<a href="http://infolab.stanford.edu/~maluf/papers/ieeepmt06.pdf" target="_blank">http://infolab.stanford.edu/~maluf/papers/ieeepmt06.pdf</a><br />
<a href="http://www.nasa.gov/pdf/560758main_Program%20Management%20Tool.pdf" target="_blank">http://www.nasa.gov/pdf/560758main_Program%20Management%20Tool.pdf</a>
</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-48063084780827707122012-09-05T17:00:00.002-05:002013-04-19T18:40:16.449-05:00SP_WHO3<p>
Wouldn't it be nice to have the ability to be able to pass more parameters to <a href="http://msdn.microsoft.com/en-us/library/ms174313.aspx" target="_blank" style="color:#2E2EFE;">SP_WHO</a> or SP_WHO2?
Well I just wrote <b style="color: #330000;">SP_WHO3</b> which allows you to pass the following parameters:
@DBName, @SPID, @Status, @Login, @hostName, @Command, @CPUtime_floor, @DiskIO_floor, @ProgramName and @precision_bit.
</p>
<p>
Furthermore, you can set @precision_bit=0 to get a close match (see comments in the code). Enjoy!
</p>
<br/>
<h2 style="margin-bottom: 5px;">SP_WHO3:</h2>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:10.0pt;
line-height:115%;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1; border: solid grey 1px; padding: 10px; height: 300px;overflow:auto; background-color: #D8D8D8;}
-->
</style>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<div class=WordSection1>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>CREATE</span><span style='font-size:
9.5pt;font-family:Consolas'> <span style='color:blue'>PROC</span> <span
style='color:teal'>sp_who3</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:gray'>(</span><span style='font-size:9.5pt;
font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@<span class=SpellE>exact_flag</span></span> <span
style='mso-tab-count:2'> </span><span style='color:blue'>bit</span><span
style='color:gray'>=</span>1<span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@<span class=SpellE>DBName</span></span><span
style='mso-tab-count:2'> </span><span class=SpellE><span
class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>100<span style='color:gray'>)=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@SPID</span><span style='mso-tab-count:3'> </span><span
class=SpellE><span style='color:blue'>int</span></span><span style='color:gray'>=-</span>1<span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@Status</span><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>40<span style='color:gray'>)=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@Login</span><span style='mso-tab-count:3'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>50<span style='color:gray'>)=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@<span class=SpellE>hostName</span></span><span
style='mso-tab-count:2'> </span><span class=SpellE><span
class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>100<span style='color:gray'>)=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@Command</span><span style='mso-tab-count:2'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>200<span style='color:gray'>)=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@<span class=SpellE>CPUtime_floor</span></span><span
style='mso-tab-count:1'> </span><span class=SpellE><span
style='color:blue'>bigint</span></span><span style='color:gray'>=-</span>1<span
style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@<span class=SpellE>DiskIO_floor</span></span><span
style='mso-tab-count:1'> </span><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:blue'>bigint</span></span><span
style='color:gray'>=-</span>1<span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>@<span class=SpellE>ProgramName</span></span><span
style='mso-tab-count:1'> </span><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>100<span style='color:gray'>)=</span><span
style='color:red'>'*All*'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:gray'>)</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>AS</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'>/******************************************************************</span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>Author:<span style='mso-tab-count:1'> </span>Alan
Burstein</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>Created on:<span style='mso-tab-count:1'> </span>9/5/2012</span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>Updated on:<span style='mso-tab-count:1'> </span>4/19/2013</span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>Use:</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>Returns the same columns as SP_WHO2 but you
can pass parameters</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span style='mso-spacerun:yes'> </span><span
class=GramE>and</span> filter the result set. </span><span style='font-size:
9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>With @<span class=SpellE>exact_flag</span>=1
(default) you only get records where there </span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span style='mso-spacerun:yes'> </span><span
class=GramE>is</span> an EXACT (=) match. For example, when @<span
class=SpellE>exact_flag</span>=1 and </span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>@Command='TASK' nothing will be returned. If <span
class=SpellE>exact_match_flag</span>=0</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span style='mso-spacerun:yes'> </span><span
class=GramE>and</span> @Command='TASK' then records where Command="TASK
MANAGER",</span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'><span
style='mso-spacerun:yes'> </span>Command="BRKR TASK", etc will be
returned. </span><span style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'>******************************************************************/</span><span
style='font-size:9.5pt;font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>BEGIN</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>SET</span> <span style='color:blue'>NOCOUNT</span> <span
style='color:blue'>ON</span><span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:green'>-- Create table to hold the results of EXEC SP_WHO2</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>DECLARE</span> <span style='color:teal'>@sp_who3</span> <span
style='color:blue'>TABLE</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'> </span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>SPID</span><span style='mso-tab-count:2'> </span><span
class=SpellE><span style='color:blue'>int</span></span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>[Status]</span><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>40<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>[Login]</span><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>50<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>HostName</span></span><span
style='mso-tab-count:1'> </span><span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>100<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>BlkBy</span></span><span
style='mso-tab-count:2'> </span><span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>4<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>DBName</span></span><span
style='mso-tab-count:2'> </span><span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>100<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>Command</span><span style='mso-tab-count:1'> </span><span
class=SpellE><span class=GramE><span style='color:blue'>varchar</span></span></span><span
class=GramE><span style='color:gray'>(</span></span>200<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>CPUtime</span></span><span
style='mso-tab-count:1'> </span><span class=SpellE><span
style='color:blue'>bigint</span></span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>DiskIO</span></span><span
style='mso-tab-count:2'> </span><span class=SpellE><span
style='color:blue'>bigint</span></span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>LastBatch</span></span><span
style='mso-tab-count:1'> </span><span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>100<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:teal'>ProgramName</span></span><span
style='mso-tab-count:1'> </span><span class=SpellE><span class=GramE><span
style='color:blue'>varchar</span></span></span><span class=GramE><span
style='color:gray'>(</span></span>100<span style='color:gray'>),</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>SPID2</span><span style='mso-tab-count:2'> </span><span
class=SpellE><span style='color:blue'>int</span></span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-tab-count:1'> </span><span
style='color:teal'>REQUESTID</span><span style='mso-tab-count:1'> </span><span
class=SpellE><span style='color:blue'>int</span></span><span style='color:gray'>);</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>INSERT</span> <span style='color:blue'>INTO</span> <span
style='color:teal'>@sp_who3</span> <span style='color:blue'>EXEC</span> <span
style='color:maroon'>SP_WHO2</span><span style='color:gray'>;</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:green'>-- <span class=GramE>output</span></span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>IF</span> <span style='color:teal'>@<span class=SpellE>exact_flag</span></span><span
style='color:gray'>=</span>1<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>BEGIN</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>SELECT</span> <span style='color:gray'>*</span> <span
style='color:blue'>FROM</span> <span style='color:teal'>@sp_who3</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>WHERE </span><span style='color:gray'>(</span><span
class=SpellE><span style='color:teal'>DBName</span></span><span
style='color:gray'>=</span><span style='color:teal'>@<span class=SpellE>DBName</span></span>
<span style='color:gray'>OR</span> <span style='color:teal'>@<span
class=SpellE>DBName</span></span><span style='color:gray'>=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>)</span> <span
style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>[Status]</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@Status</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@Status</span><span style='color:gray'>=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>)</span> <span
style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>SPID</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@SPID</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@SPID</span><span class=GramE><span style='color:gray'>=(</span></span><span
style='color:gray'>-</span>1<span style='color:gray'>))</span> <span
style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>[Login]</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@Login</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@Login</span><span style='color:gray'>=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>)</span> <span
style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>HostName</span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@<span class=SpellE>hostName</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@<span class=SpellE>hostName</span></span><span
style='color:gray'>=</span><span style='color:red'>'*All*'</span><span
style='color:gray'>)</span> <span style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>Command</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@Command</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@Command</span><span style='color:gray'>=</span><span
style='color:red'>'*All*'</span><span style='color:gray'>)</span> <span
style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>CPUtime</span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@<span class=SpellE>CPUtime_floor</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@<span class=SpellE>CPUtime_floor</span></span><span
class=GramE><span style='color:gray'>=(</span></span><span style='color:gray'>-</span>1<span
style='color:gray'>))</span> <span style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>DiskIO</span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@<span class=SpellE>DiskIO_floor</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@<span class=SpellE>DiskIO_floor</span></span><span
class=GramE><span style='color:gray'>=(</span></span><span style='color:gray'>-</span>1<span
style='color:gray'>))</span> <span style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>ProgramName</span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@<span class=SpellE>ProgramName</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@<span class=SpellE>ProgramName</span></span><span
style='color:gray'>=</span><span style='color:red'>'*All*'</span><span
style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>ORDER</span> <span style='color:blue'>BY</span> <span
class=SpellE><span style='color:teal'>LastBatch</span></span> <span
style='color:blue'>DESC</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>END</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>ELSE</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>BEGIN</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>SELECT</span> <span style='color:teal'>@<span class=SpellE>DBName</span></span><span
style='color:gray'>=</span><span style='color:red'>'%'</span><span
style='color:gray'>+</span><span class=GramE><span style='color:fuchsia'>CAST</span><span
style='color:gray'>(</span></span><span style='color:teal'>@<span class=SpellE>DBName</span></span>
<span style='color:blue'>as</span> <span class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>100<span style='color:gray'>))+</span><span
style='color:red'>'%'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@Status</span><span style='color:gray'>=</span><span
style='color:red'>'%'</span><span style='color:gray'>+</span><span class=GramE><span
style='color:fuchsia'>CAST</span><span style='color:gray'>(</span></span><span
style='color:teal'>@Status</span> <span style='color:blue'>as</span> <span
class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>40<span style='color:gray'>))+</span><span
style='color:red'>'%'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@Login</span><span style='color:gray'>=</span><span
style='color:red'>'%'</span><span style='color:gray'>+</span><span class=GramE><span
style='color:fuchsia'>CAST</span><span style='color:gray'>(</span></span><span
style='color:teal'>@Login</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>50<span style='color:gray'>))+</span><span
style='color:red'>'%'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@<span class=SpellE>hostName</span></span><span
style='color:gray'>=</span><span style='color:red'>'%'</span><span
style='color:gray'>+</span><span class=GramE><span style='color:fuchsia'>CAST</span><span
style='color:gray'>(</span></span><span style='color:teal'>@<span class=SpellE>hostName</span></span>
<span style='color:blue'>AS</span> <span class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>100<span style='color:gray'>))+</span><span
style='color:red'>'%'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@Command</span><span style='color:gray'>=</span><span
style='color:red'>'%'</span><span style='color:gray'>+</span><span class=GramE><span
style='color:fuchsia'>CAST</span><span style='color:gray'>(</span></span><span
style='color:teal'>@Command</span> <span style='color:blue'>AS</span> <span
class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>200<span style='color:gray'>))+</span><span
style='color:red'>'%'</span><span style='color:gray'>,</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:teal'>@<span class=SpellE>ProgramName</span></span><span
style='color:gray'>=</span><span style='color:red'>'%'</span><span
style='color:gray'>+</span><span class=GramE><span style='color:fuchsia'>CAST</span><span
style='color:gray'>(</span></span><span style='color:teal'>@<span class=SpellE>ProgramName</span></span>
<span style='color:blue'>AS</span> <span class=SpellE><span style='color:blue'>varchar</span></span><span
style='color:gray'>(</span>100<span style='color:gray'>))+</span><span
style='color:red'>'%'</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>SELECT</span> <span style='color:gray'>*</span> <span
style='color:blue'>FROM</span> <span style='color:teal'>@sp_who3</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>WHERE </span><span style='color:gray'>(</span><span
class=SpellE><span style='color:teal'>DBName</span></span> <span
style='color:gray'>LIKE</span> <span style='color:teal'>@<span class=SpellE>DBName</span></span>
<span style='color:gray'>OR</span> <span style='color:teal'>@<span
class=SpellE>DBName</span></span><span style='color:gray'>=</span><span
style='color:red'>'%*All<span class=GramE>*%</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>[Status]</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>LIKE</span>
<span style='color:teal'>@Status</span> <span style='color:gray'>OR</span> <span
style='color:teal'>@Status</span><span style='color:gray'>=</span><span
style='color:red'>'%*All<span class=GramE>*%</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>SPID</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@SPID</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@SPID</span><span class=GramE><span style='color:gray'>=(</span></span><span
style='color:gray'>-</span>1<span style='color:gray'>))</span> <span
style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>[Login]</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>LIKE</span>
<span style='color:teal'>@Login</span> <span style='color:gray'>OR</span> <span
style='color:teal'>@Login</span><span style='color:gray'>=</span><span
style='color:red'>'%*All<span class=GramE>*%</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>HostName</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>LIKE</span>
<span style='color:teal'>@<span class=SpellE>hostName</span></span> <span
style='color:gray'>OR</span> <span style='color:teal'>@<span class=SpellE>hostName</span></span><span
style='color:gray'>=</span><span style='color:red'>'%*All<span class=GramE>*%</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>Command</span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@Command</span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@Command</span><span style='color:gray'>=</span><span
style='color:red'>'%*All<span class=GramE>*%</span>'</span><span
style='color:gray'>)</span> <span style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>CPUtime</span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@<span class=SpellE>CPUtime_floor</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@<span class=SpellE>CPUtime_floor</span></span><span
class=GramE><span style='color:gray'>=(</span></span><span style='color:gray'>-</span>1<span
style='color:gray'>))</span> <span style='color:gray'>AND</span> <o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>DiskIO</span></span><span
style='font-size:9.5pt;font-family:Consolas;color:gray'>>=</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal'>@<span class=SpellE>DiskIO_floor</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>OR</span>
<span style='color:teal'>@<span class=SpellE>DiskIO_floor</span></span><span
class=GramE><span style='color:gray'>=(</span></span><span style='color:gray'>-</span>1<span
style='color:gray'>))</span> <span style='color:gray'>AND</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'><span style='mso-spacerun:yes'>
</span></span><span style='font-size:9.5pt;font-family:Consolas;color:gray'>(</span><span
class=SpellE><span style='font-size:9.5pt;font-family:Consolas;color:teal'>ProgramName</span></span><span
style='font-size:9.5pt;font-family:Consolas'> <span style='color:gray'>LIKE</span>
<span style='color:teal'>@<span class=SpellE>ProgramName</span></span> <span
style='color:gray'>OR</span> <span style='color:teal'>@<span class=SpellE>ProgramName</span></span><span
style='color:gray'>=</span><span style='color:red'>'%*All<span class=GramE>*%</span>'</span><span
style='color:gray'>)</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>ORDER</span> <span style='color:blue'>BY</span> <span
class=SpellE><span style='color:teal'>LastBatch</span></span> <span
style='color:blue'>DESC</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas'><span style='mso-spacerun:yes'> </span><span
style='color:blue'>END</span><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>END</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:blue'>GO</span><span style='font-size:9.5pt;
font-family:Consolas'><o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;mso-layout-grid-align:none;text-autospace:none'><span style='font-size:
9.5pt;font-family:Consolas;color:green'>--SP_WHO3 @<span class=SpellE>exact_flag</span>=0,
@<span class=SpellE>ProgramName</span>='<span class=SpellE>repl</span>', @<span
class=SpellE>CPUtime_floor</span>=10000<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt'><span
style='font-family:"Arial","sans-serif"'><o:p> </o:p></span></p>
</div>
<!--
<form style="margin-left: 10px; width: 400px; border: solid 1px #808080; background-color: #F2F2F2">
<p style="margin-top: 6px; margin-bottom: 10px; margin-left: 12px; font-weight: bold;">SP_WHO3:</p>
<textarea name="S1" rows="14" style="width: 360px; margin-left: 12px; margin-bottom: 10px; border: solid 1px #808080; overflow:auto;">
USE DBADW
GO
CREATE PROC sp_who3
(
@precision_bit bit=1,
@DBName varchar(100)='*All*',
@SPID int=-1,
@Status varchar(40)='*All*',
@Login varchar(50)='*All*',
@hostName varchar(100)='*All*',
@Command varchar(200)='*All*',
@CPUtime_floor bigint=-1,
@DiskIO_floor bigint=-1,
@ProgramName varchar(100)='*All*'
)
AS
/******************************************************************
Author: Alan Burstein
Created on: 9/5/2012
Use:
Returns the same columns as SP_WHO2 but you can pass parameters
and filter the result set.
With @precision_bit=1 (default) you only get records where there
is an EXACT (=) match. For example, when @precision_bit=1 and
@Command='TASK' nothing will be returned. If precision_bit=0
and @Command='TASK' then records where Command="TASK MANAGER",
Command="BRKR TASK", etc will be returned.
******************************************************************/
BEGIN
SET NOCOUNT ON;
-- Create table to hold the results of EXEC SP_WHO2
DECLARE @sp_who3 TABLE
(
SPID int,
[Status] varchar(40),
[Login] varchar(50),
HostName varchar(100),
BlkBy varchar(4),
DBName varchar(100),
Command varchar(200),
CPUtime bigint,
DiskIO bigint,
LastBatch varchar(100),
ProgramName varchar(100),
SPID2 int,
REQUESTID int
);
INSERT INTO @sp_who3 EXEC SP_WHO2;
-- output
IF @precision_bit=1
BEGIN
SELECT * FROM @sp_who3
WHERE (DBName=@DBName OR @DBName='*All*') AND
([Status]=@Status OR @Status='*All*') AND
(SPID=@SPID OR @SPID=(-1)) AND
([Login]=@Login OR @Login='*All*') AND
(HostName=@hostName OR @hostName='*All*') AND
(Command=@Command OR @Command='*All*') AND
(CPUtime>=@CPUtime_floor OR @CPUtime_floor=(-1)) AND
(DiskIO>=@DiskIO_floor OR @DiskIO_floor=(-1)) AND
(ProgramName=@ProgramName OR @ProgramName='*All*')
ORDER BY LastBatch DESC
END
ELSE
BEGIN
SELECT @DBName='%'+CAST(@DBName as varchar(100))+'%',
@Status='%'+CAST(@Status as varchar(40))+'%',
@Login='%'+CAST(@Login AS varchar(50))+'%',
@hostName='%'+CAST(@hostName AS varchar(100))+'%',
@Command='%'+CAST(@Command AS varchar(200))+'%',
@ProgramName='%'+CAST(@ProgramName AS varchar(100))+'%'
SELECT * FROM @sp_who3
WHERE (DBName LIKE @DBName OR @DBName='%*All*%') AND
([Status] LIKE @Status OR @Status='%*All*%') AND
(SPID=@SPID OR @SPID=(-1)) AND
([Login] LIKE @Login OR @Login='%*All*%') AND
(HostName LIKE @hostName OR @hostName='%*All*%') AND
(Command=@Command OR @Command='%*All*%') AND
(CPUtime>=@CPUtime_floor OR @CPUtime_floor=(-1)) AND
(DiskIO>=@DiskIO_floor OR @DiskIO_floor=(-1)) AND
(ProgramName LIKE @ProgramName OR @ProgramName='%*All*%')
ORDER BY LastBatch DESC
END
END
GO
--SP_WHO3 @precision_bit=0, @ProgramName='repl', @CPUtime_floor=10000
</textarea>
</form>
-->
<br/>
<h3 style="margin-bottom: 5px;">Example:</h3>
<p style="margin-top: 0px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaMHsgyUG-rhmOWS1FxvdmR24zu8rAMS-0YhcpT0gSYSgY2DkbEVDHRH6hC76n3nbvQAptWKeGjjaKxh6YVnoAFnRbS6we4Ppsl3_r8HK0XezDzazzz0WWDS5aMJiM_B32_mrCcq6P88g/s1600/sp_who3_1.png" imageanchor="1" style="border: solid 0px black;"><img border="0" height="96" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaMHsgyUG-rhmOWS1FxvdmR24zu8rAMS-0YhcpT0gSYSgY2DkbEVDHRH6hC76n3nbvQAptWKeGjjaKxh6YVnoAFnRbS6we4Ppsl3_r8HK0XezDzazzz0WWDS5aMJiM_B32_mrCcq6P88g/s400/sp_who3_1.png" /></a>
</p>
<br/>
<h3>Epilogue</h3>
<p>Before posting this I googled <i>SP_WHO3</i>. It turns out I was not the first to come up with this idea. Bummer. My SP_WHO3 is still great.</p>
<p>
--ab
</p>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjChGlnlBCHCS920uS2-eMvBzcGdrpC731KZzC26SBWM4yjOy9T7sduli0o3dcl8CfRm9KyRrO4c-abotmSVmna4YdZN5lj8z6CLSHSRmGvB8DN98Pduj61oE0Oa4xzMbLL1QfgZIkOcAs/s251/ninja.jpg"
alt="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
title="The new xmlsqlninja logo ('X-M-L'-'See-Quel' 'ninja')"
style="height: 100px;" />
</p>
<p><b>Last Updated:</b> 4/19/2013 (code cleanup)</p>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0tag:blogger.com,1999:blog-8428716005044606822.post-17067434336712660632012-08-28T13:47:00.001-05:002012-09-06T02:49:41.845-05:00Get the size of all databases<style type="text/css">
p, form, a {font-family: Segoe UI;}
textarea {font-size: small; font-family: Courier New;}
a:link {color: blue; text-decoration: none;}
a:visited {color: blue; text-decoration: none;}
a:hover {text-decoration: underline;}
</style>
<h3>...without using dynamic SQL or sp_msForEachDB</h3>
<p>
A common task for DBA's is to manage the size of all the databases on one or more instances. This often requires the ability to collect DB sizes using T-SQL; most methods
I have found involve <a href="http://www.sommarskog.se/dynamic_sql.html" target="_blank"> Dynamic SQL</a> or sp_msForEachDB. These methods work but, in each case, leaves you vulnerable to
<a href="http://en.wikipedia.org/wiki/SQL_injection" target="_blank">SQL Injection.</a>
</p>
<p>
SQL Server 2005 introduced the <a href="http://msdn.microsoft.com/en-us/library/ms186782.aspx" target="_blank">sys.master_files</a>
catalog view. sys.master_files contains everything you need for this (log and data file sizes) <i>except</i> for the database name.
That is okay, because it does provide the database_id which can be used for joining to sys.databases which contains the database_id
<i>and</i> database name.
</p>
<p>This query will get you all db sizes without any Dynamic SQL: </p>
<form style="margin-left: 10px; width: 360px; border: solid 1px #808080; background-color: #F2F2F2">
<p style="margin-top: 6px; margin-bottom: 10px; margin-left: 12px; font-weight: bold;">Get All Database Sizes:</p>
<textarea name="S1" rows="14" style="width: 320px; margin-left: 12px; margin-bottom: 10px; border: solid 1px #808080; overflow: hidden;">
;WITH dbs([dbid],size) AS
(
SELECT database_id,
SUM(size)/128
FROM sys.master_files
GROUP BY database_id
)
SELECT d2.name db,
d1.size [size(mb)]
FROM dbs d1
JOIN sys.databases d2 ON d1.dbid=d2.database_id
</textarea>
</form>Alan Bursteinhttp://www.blogger.com/profile/00709822089051136584noreply@blogger.com0