像'%'不接受NULL值

zgo*_*ski 24 sql null

我有从用户输入构建的查询(通过html表单传递).它看起来像(简单的例子):

Select * From [table] Where [table].[column] like '<parameter>'
Run Code Online (Sandbox Code Playgroud)

此参数可以是可选的,因此如果用户将相应的输入字段留空,则传递%.它工作正常,直到我遇到NULL值.我理解'%'匹配的符号不是null,但我想在这种情况下将NULL视为空字符串.

我该怎么办?当用户离开空输入时,更改查询(如何?)或传递另一个符号?

谢谢.

PS.这是现有系统的真正问题,我知道它远非最佳解决方案,但我必须处理它.

And*_*mar 54

您可以coalesce像空字符串一样处理null:

where COALESCE([table].[column],'') like '<parameter>'
Run Code Online (Sandbox Code Playgroud)

在SQL Server上,您还可以使用IsNull:

where IsNull([table].[column],'') like '<parameter>'
Run Code Online (Sandbox Code Playgroud)


Ped*_*ues 5

isnull([table].[column], '') like '%'
Run Code Online (Sandbox Code Playgroud)

奇迹般有效