我有以下查询:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
Run Code Online (Sandbox Code Playgroud)
现在我想要那个'?' 为NULL,必须选择所有记录.我怎样才能在SQL中实现这一点?谢谢
Mah*_*mal 64
试试这个:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
Run Code Online (Sandbox Code Playgroud)
Rob*_*ert 34
您还可以使用的功能IFNULL,COALESCE,NVL,ISNULL检查空值.这取决于您的RDBMS.
MySQL:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);
Run Code Online (Sandbox Code Playgroud)
要么
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);
Run Code Online (Sandbox Code Playgroud)
ORACLE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);
Run Code Online (Sandbox Code Playgroud)
SQL Server/SYBASE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
Run Code Online (Sandbox Code Playgroud)