<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoPlainText">Hi Roy,<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">It's something going wrong with the period&#8230;or our interpretation of it&#8230;!<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">If I replace it with the [:punct:] set I get some very weird results.<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">Ie. This works as I expect.<o:p></o:p></p>
<p class="MsoPlainText">select * from foo where name not similar to '[-[:UPPER:][:punct:]]&#43;';<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">‚€€€€€€€€€€ƒ<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">†€€€€€€€€€€‡<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">„€€€€€€€€€€…<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">(0 rows)<o:p></o:p></span></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">But this doesn&#8217;t:<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">select * from foo where name not similar to '[-[:UPPER:].]&#43;';<o:p></o:p></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">‚€€€€€€€€€€ƒ<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">†€€€€€€€€€€‡<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">HANN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">LARGE-HANN<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">ST.HANN&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">„€€€€€€€€€€…<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:&quot;Courier New&quot;">(3 rows)<o:p></o:p></span></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">Marty<o:p></o:p></p>
<p class="MsoPlainText"><span lang="EN-US">-----Original Message-----<br>
From: Roy Hann [mailto:specially@processed.almost.meat] <br>
Sent: 23 July 2019 12:06<br>
To: info-ingres@lists.planetingres.org<br>
Subject: [Info-ingres] Am I doing SIMILAR wrong?</span></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">I am trying to write a simple data validation query looking for names<o:p></o:p></p>
<p class="MsoPlainText">containing impermissible characters. I am falling down over names<o:p></o:p></p>
<p class="MsoPlainText">containing a '.' character. Here's what I'm seeing:<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">* create table foo ( name varchar(10) not null );<o:p></o:p></p>
<p class="MsoPlainText">* insert into foo values ('HANN'),('LARGE-HANN'),('ST.HANN');<o:p></o:p></p>
<p class="MsoPlainText">* \g<o:p></o:p></p>
<p class="MsoPlainText">Executing . . .<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">(3 rows)<o:p></o:p></p>
<p class="MsoPlainText">continue<o:p></o:p></p>
<p class="MsoPlainText">* select * from foo \g<o:p></o:p></p>
<p class="MsoPlainText">Executing . . .<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">|name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">|HANN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">|LARGE-HANN|<o:p></o:p></p>
<p class="MsoPlainText">|ST.HANN&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">(3 rows)<o:p></o:p></p>
<p class="MsoPlainText">continue<o:p></o:p></p>
<p class="MsoPlainText">* select * from foo where name not similar to '[-''ABCDEFGHIJKLMNOPQRSTUVWXYZ]&#43;' \g<o:p></o:p></p>
<p class="MsoPlainText">Executing . . .<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">|name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">|ST.HANN&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">(1 row)<o:p></o:p></p>
<p class="MsoPlainText">continue<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">---------------------------<o:p></o:p></p>
<p class="MsoPlainText">So far, so good. But now...<o:p></o:p></p>
<p class="MsoPlainText">---------------------------<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">* select * from foo where name not similar to '[-.''ABCDEFGHIJKLMNOPQRSTUVWXYZ]&#43;' \g<o:p></o:p></p>
<p class="MsoPlainText">Executing . . .<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">|name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">|HANN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">|LARGE-HANN|<o:p></o:p></p>
<p class="MsoPlainText">|ST.HANN&nbsp;&nbsp; |<o:p></o:p></p>
<p class="MsoPlainText">&#43;----------&#43;<o:p></o:p></p>
<p class="MsoPlainText">(3 rows)<o:p></o:p></p>
<p class="MsoPlainText">continue<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">---------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoPlainText">I am pretty sure '.' is not a special character in a character class,<o:p></o:p></p>
<p class="MsoPlainText">and sure enough, if I try to escape it....<o:p></o:p></p>
<p class="MsoPlainText">---------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">* select * from foo where name not similar to '[-\.''ABCDEFGHIJKLMNOPQRSTUVWXYZ]&#43;' escape '\' \g<o:p></o:p></p>
<p class="MsoPlainText">Executing . . .<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">E_AD101D Illegal pattern match specified:&nbsp; Illegal ESCAPE sequence.<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; The ESCAPE char must be followed by one of:<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `[' (left bracket)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `]' (right bracket)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `(' (left paren)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `)' (right paren)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `|' (vertical bar)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `^' (circumflex)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `-' (minus sign)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `&#43;' (plus sign)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `*' (asterisk)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `_' (underscore)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `%' (percent)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `?' (question mark)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; `{' (left brace)<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; another ESCAPE char.<o:p></o:p></p>
<p class="MsoPlainText">&nbsp;&nbsp;&nbsp; (Tue Jul 23 11:55:21 2019)<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">Am I doing something wrong? I can't for the life of me see it.
<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">FYI, this is II 11.0.0 (su9.us5/100)<o:p></o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText"><o:p>&nbsp;</o:p></p>
<p class="MsoPlainText">Roy<o:p></o:p></p>
<p class="MsoPlainText">_______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">Info-ingres mailing list<o:p></o:p></p>
<p class="MsoPlainText">Info-ingres@lists.planetingres.org<o:p></o:p></p>
<p class="MsoPlainText">https://lists.planetingres.org/mailman/listinfo/info-ingres<o:p></o:p></p>
</div>
</body>
</html>