sql - 条件 WHERE 语句 SQL Server

标签 sql sql-server-2008 tsql

我想创建一个将返回所有 Country 的 SP行除非 CountryID作为参数提供。这是我想象的它可能会起作用的方式,但它不喜欢它。

ALTER PROCEDURE [dbo].[usp_return_countries]
    @CountryID AS INT = 0
AS
BEGIN
        SELECT *
        FROM Countries
        WHERE Active = 1

        IF @CountryID > 0 BEGIN
            AND @CountryID = CountryID
        END

END

谢谢

附言我认为可能有比简单地根据上述条件重复整个 SELECT 语句更好的方法。

最佳答案

试试这个,它很优雅:)

 ALTER PROCEDURE [dbo].[usp_return_countries]
   @CountryID AS INT = 0
 AS
 BEGIN

    SELECT *
    FROM Countries
    WHERE Active = 1
    AND (@CountryID = 0 OR @CountryID = CountryID)

 END

关于sql - 条件 WHERE 语句 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110784/

相关文章:

mysql - REGEX sql 查询

sql-server-2008 - xp_cmdshell 独立运行 7z,但找不到带参数的 EXE

SQL Server 2008 : setting default location for mdf/ldf

sql - SQL中如何复制表避免游标?

sql-server - MS SQL 时态表更新失败

sql - 如何为所有表的存储过程 T-SQL 设置 NO LOCK

sql - JOIN或带有exists子句的Correlated子查询,哪个更好

sql - 选择两层深的位置

mysql - 通过两个参数对 MySQL 表进行排序

sql - SQL Server 2008-尝试编辑日期-语法错误?