如何选择Field ='*'的所有行

时间:2014-02-07 17:18:15

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012

我想创建简单的查询 其中@_name可以是“任何值”,如“*”

declare @_name nvarchar(120)

select * from 
table_1
whare Name =@_name

我希望查询能够使用'*'获取@_name作为参数,并且它将为我提供包含所有名称的所有行或在其他情况下它将获得@_name ='Jack' 并且只返回Name ='Jack'

的行

可能有一个像'*'这样的符号告诉SQL获取所有行吗?

有可能吗?

2 个答案:

答案 0 :(得分:4)

像这样:

SELECT *
FROM table_1
WHERE (Name =@_name OR @_name='*')

我们的想法是将星号'*'视为特殊值:当@_name'*'时,Name =@_name部分将被忽略。

答案 1 :(得分:0)

如果name可能是NULL,则表达式为:

SELECT *
FROM table_1
WHERE (Name =@_name OR @_name='*' or Name is null and @Name is null)

我提到这一点是因为NULL在使用像这样的变量时常常用来表示“全部”(而不是像“*”这样的特殊字符串)。