sql查询如果参数为null则选择全部

Fra*_*nky 40 sql parameters

我有以下查询:

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)

  • 如果"NAME"中存在空值,则无效.但对于非可空列,这是要走的路=)(编辑:至少不在SQL Server中) (4认同)