我想创建简单的查询 其中@_name可以是“任何值”,如“*”
declare @_name nvarchar(120)
select * from
table_1
whare Name =@_name
我希望查询能够使用'*'获取@_name作为参数,并且它将为我提供包含所有名称的所有行或在其他情况下它将获得@_name ='Jack' 并且只返回Name ='Jack'
的行可能有一个像'*'这样的符号告诉SQL获取所有行吗?
有可能吗?
答案 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
在使用像这样的变量时常常用来表示“全部”(而不是像“*”这样的特殊字符串)。