home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.ms-sqlserver      Notorious Rube Goldberg contraption      19,505 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 19,200 of 19,505   
   rja.carnegie@gmail.com to Erland Sommarskog   
   Re: Regular expression question   
   18 Jul 15 08:59:35   
   
   On Friday, 10 July 2015 20:54:45 UTC+1, Erland Sommarskog  wrote:   
   > (rja.carnegie@gmail.com) writes:   
   > > SQL Server 2005.  The second and third versions of the   
   > > following statement print 'Yes', which is unexpected.   
   > >   
   > > The intention is to test whether the first term is   
   > > a compound house "number" such as '1A' or '1-3'.   
   > > Either / or \ I thought would perform an "escape"   
   > > in the pattern string, to treat a following special   
   > > character as the literal character, but it seems to   
   > > perform correctly without that, not with.  So this   
   > > test may be not doing what I think it is, at all.   
   > > And the question is: uh?  ;-)   
   > >   
   > > IF ( '15' LIKE N'[1-9]%[-A-Z]%'  ) PRINT 'Yes 1'   
   > >   
   > > IF ( '15' LIKE N'[1-9]%[/-A-Z]%' ) PRINT 'Yes 2'   
   > >   
   > > IF ( '15' LIKE N'[1-9]%[\-A-Z]%' ) PRINT 'Yes 3'   
   > >   
   >   
   > The patterns [/-A-Z] and [\-A-Z] means "all characters in the range from   
   > (back)slash to A, as well as hyphen and Z. This will match 15 if digits   
   > are in this range in your collation.   
   >   
   > There is no predefined escape character for LIKE, but you can specify one   
   > explictly:   
   >   
   >   IF '15%' LIKE '[1-9][0-9]!%' ESCAPE '!' PRINT 'Yup'   
   >   IF '15$' LIKE '[1-9][0-9]!%' ESCAPE '!' PRINT 'Nope'   
   >   
   > You can also use it inside brackets:   
   >   
   >   IF '10%' LIKE '[1-9][0!-9]!%' ESCAPE '!' PRINT 'Yup'   
   >   IF '11%' LIKE '[1-9][0!-9]!%' ESCAPE '!' PRINT 'Nope'   
   >   IF '1-%' LIKE '[1-9][0!-9]!%' ESCAPE '!' PRINT 'Yup'   
   >   IF '18%' LIKE '[1-9][0!-9]!%' ESCAPE '!' PRINT 'Nope'   
   >   IF '19%' LIKE '[1-9][0!-9]!%' ESCAPE '!' PRINT 'Yup'   
      
   I forgot to thank you for explaining this.   
      
   I wonder where I picked up the idea that you just use   
   a standard escape character.  Maybe it was described   
   and demonstrated in the next line, that I didn't read.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca