You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何在输入为空时返回空结果而非返回全表匹配数据

问题原因

你当前的写法中,当 @ModelioPavadinimas 参数为空字符串时,拼接后得到的匹配规则是 %,LIKE % 会匹配所有非空的ModelioPavadinimas字段值,因此会返回全表所有符合隐含条件的数据。如果参数是NULL值,SQL Server中NULL拼接任意字符结果都是NULL,LIKE NULL 返回未知结果,不会返回数据,所以你的问题仅出现在参数为空字符串的场景。

解决方案

你可以选择下面任意一种方式实现需求:

  • 方案1:直接修改SQL查询语句,新增参数非空校验
    仅需要在WHERE子句中增加参数非空判断逻辑即可,原有匹配逻辑不需要调整,不需要修改应用层代码:

    SELECT *
    FROM dbo.BarcodeData
    WHERE 
      -- 空字符串时直接不满足条件,返回空结果
      @ModelioPavadinimas <> ''
      AND ModelioPavadinimas LIKE @ModelioPavadinimas + '%';
    

    如果你需要兼容参数可能为NULL的场景,可以再加一层NULL校验:

    SELECT *
    FROM dbo.BarcodeData
    WHERE 
      @ModelioPavadinimas IS NOT NULL
      AND @ModelioPavadinimas <> ''
      AND ModelioPavadinimas LIKE @ModelioPavadinimas + '%';
    
  • 方案2:应用层提前校验拦截
    在用户提交参数后、发起数据库查询前,先判断参数是否为空,为空时直接返回空结果,不需要访问数据库,性能更优。

内容的提问来源于stack exchange,提问作者Mantvydas Smilgis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:45:03