Query A is the same as:

```
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
```

Since `3 = 3`

is true, you get a result.

Query B is the same as:

```
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
```

When `ansi_nulls`

is on, `3 <> null`

is UNKNOWN, so the predicate evaluates to UNKNOWN, and you don’t get any rows.

When `ansi_nulls`

is off, `3 <> null`

is true, so the predicate evaluates to true, and you get a row.