>Anybody know any gotcha's with LIKE? Our fund codes are in the form: '123-4567'. I am using SELECT against Fox tables.
>
>This evaluates .T. against records in the table in the watch window as expected:
>LIKE('4??-8002', ALLT(PyrlDist.Fund))
>
>but does not work within a SELECT:
>SELECT SUM(IIF(LIKE('4??-8002', ALLT(PyrlDist.Fund)), 1, 0)) AS ...
>
>But this SELECTs data correctly:
>SELECT SUM(IIF(LIKE('4*-8002', ALLT(PyrlDist.Fund)), 1, 0)) AS ...
>
>So I can get my data, but I'd like to know why the ??'s didn't work. Any ideas?
This is a guess, but it has to do with how the wildcards * and ? work. An * matches any sequence
of zero or more characters, while the ? matches
exactly any one character. Therefore, if your value is stored in the fund as:
"499 -8002"
4*-8002 matches, with * representing "99 ", while 4??-8002 fails, since the two ? characters match the two 9s, but ' -8002' is not the same as "-8002"
Similarly with "49-8002" as a data value, the * works, but ?? doesn't, since '8002' is not the same as "-8002"...
Isn't pattern matching
fun?????