three-valued-logic

SQL 'Or' operator. How does it work in the following scenario?

I've been working on optimizing a query and have ran into a situation that's making me question how I've always used SQL's OR operator. (SQL Server 2000 also) I have a query where the conditional (WHERE) clause looks something like this: WHERE (Column1 = @Param1 or Column1 LIKE @Param1 + '%') AND (@Param2 = '' OR Column2 = @Param2 OR C...

How should I test a field against an SQL variable which can be null ?

I've got the following SQL : CREATE TABLE tbFoo( a varchar(50) NULL, ) CREATE NONCLUSTERED INDEX IX_tbFoo_a ON tbFoo ( a ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) insert into tbFoo ...

Options for eliminating NULLable columns from a DB model (in order to avoid SQL's three-valued logic)?

Some while ago, I've been reading through the book SQL and Relational Theory by C. J. Date. The author is well-known for criticising SQL's three-valued logic (3VL).1) The author makes some strong points about why 3VL should be avoided in SQL, however he doesn't outline how a database model would look like if nullable columns weren't all...