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