Sql 根据变量返回不以数字结尾的值

Sql 根据变量返回不以数字结尾的值,sql,sql-server,string,stored-procedures,where-clause,Sql,Sql Server,String,Stored Procedures,Where Clause,我将一个变量传递到存储过程中,并在WHERE子句中编写case语句。通常我会这样写: CodeID like CASE WHEN @Duration != '0' THEN '%' + @Duration ELSE '%' END 然而,问题是这并不是我所需要的。我真正需要的是带有IF@Duration!='逻辑的东西“0”则类似“%”+@Duration的CodeID不会以数字结尾 这可能吗?我曾考虑编写两个IF语句,每个语

我将一个变量传递到存储过程中,并在WHERE子句中编写case语句。通常我会这样写:

CodeID like CASE WHEN @Duration != '0' 
                THEN '%' + @Duration 
                ELSE '%' END
然而,问题是这并不是我所需要的。我真正需要的是带有IF@Duration!='逻辑的东西“0”则类似“%”+@Duration的CodeID不会以数字结尾

这可能吗?我曾考虑编写两个IF语句,每个语句中都有相应的查询,但由于没有数字的通配符,我在这个逻辑上也遇到了一些问题。

怎么样:

(@Duration <> '0' and codeid like '%' + @duration) or
(@Duration = '0' and codeid like '%[0-9]')
   
(@Duration“0”和类似于“%”+@Duration的codeid)或
(@Duration='0'和类似于“%[0-9]”的代码ID)
我真正需要的是带有IF@Duration!='逻辑的东西“0”则类似“%”+@Duration的CodeID不会以数字结尾

使用布尔逻辑:

where 
    (@duration <> '0' and CodeID like '%' + @Duration)
    or (@duration = '0' and CodeID not like '%[0-9]')
在哪里
(@duration“0”和类似于“%”的代码ID+@duration)
或(@duration='0'和CodeID与“%[0-9]”不同)