I wanted to look for records where a certain string field was not blank or null, so I simply wrote SELECT ... FROM myTable WHERE x, assuming that blank and null strings would evaluate to false, but that doesn’t appear to be the case.
The string “02306” is true, whereas “N06097EIP” is somehow false.
What’s going on?
Edit: I’m aware of the workarounds, I simply want to know how the casting works.
In these expression string are first converted to numbers. “02306” is converted to 2306 which is >0 and therefore considered
true, while “N06097EIP” (starting with non-digit) is converted to 0, which is evaluated asfalse.Compare results of:
and