The documentation you quoted suggests that a string is only considered `TRUE` when it starts with a number that either evaluates to one, or possibly, non-zero (I can't tell from that extract). In either case, `'xxx1'` does _not_ start with a number, and I wouldn't expect it to be true. For most of the rest of your examples, you are are not coercing SQLite to consider `'1englisg'` as a boolean, you're comparing it (a string) with other numbers etc. However, if you _do_ coerce this (by "`or 0`"): ``` sqlite> select '1english' or 0 ; 1 sqlite> select ( '1english' or 0 ) = TRUE ; 1 sqlite> select ( '1english' or 0 ) = FALSE ; 0 sqlite> select ( '1english' or 0 ) is TRUE ; 1 sqlite> select ( '1english' or 0 ) is FALSE ; 0 ```