SQL - 如何创建一个使搜索成为可能的选择

时间:2016-10-24 12:12:54

标签: sql

我正在尝试创建一个搜索,您可以通过键入名称的某些部分进行搜索。但是当搜索输入为空时,它会显示表中的所有人。 当搜索输入为= to&#34时,我尝试编写SQL来选择*。 "(空)并选择*当搜索为1个字符或更多时,至少有一部分句子,但每次如果我写了它的作品,但当搜索输入为空时,任何行都被选中。我的代码是:

SELECT * FROM [Table] WHERE [nome] LIKE '%@search%'

3 个答案:

答案 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;