sql query if parameter is null select all
Can the following query be modified to return all records if the ?
is null?
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
Solution 1:
Try this:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
Solution 2:
You can also use functions IFNULL
,COALESCE
,NVL
,ISNULL
to check null value. It depends on your RDBMS.
MySQL:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);
or
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);
ORACLE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);
SQL Server / SYBASE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
Solution 3:
The foll. query will handle the case where the Name (table column value) can also be NULL:
SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');