我正在尝试创建一个搜索,您可以通过键入名称的某些部分进行搜索。但是当搜索输入为空时,它会显示表中的所有人。 当搜索输入为= to&#34时,我尝试编写SQL来选择*。 "(空)并选择*当搜索为1个字符或更多时,至少有一部分句子,但每次如果我写了它的作品,但当搜索输入为空时,任何行都被选中。我的代码是:
SELECT * FROM [Table] WHERE [nome] LIKE '%@search%'
答案 0 :(得分:2)
假设您使用的是SQL Server:
WHERE [nome] LIKE '%' + coalesce(@search, '') + '%'
但是,您可以考虑使用contains()
进行全文搜索。
编辑:
哎呀,我以为你希望查询在搜索字符串为空时返回所有内容。怎么样:
WHERE [nome] LIKE '%' + @search + '%' AND @search <> ''
答案 1 :(得分:0)
如果搜索字符串为空,这将返回字段nome为空的行。如果没有行为空[nome],则不返回任何行。
SELECT * FROM [Table] WHERE [nome] Like Case When @search = '' Then '' Else '%' + @search + '%' end
答案 2 :(得分:0)
请记住将列或参数强制转换为nvarchar:
像这样:SELECT * FROM [Table] WHERE [nome] LIKE&#39;%&#39; + CAST(@YourFieldOrParameter AS NVARCHAR(MAX))+&#39;%&#39;