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

Delphi中LIKE查询含&字符的行异常问题求助

解决LIKE查询含"&"字符返回所有非空行的问题

问题原因

FireDAC默认将&视为参数占位符,而非普通字符。当执行LIKE '%&%'时,FireDAC会把&解析成参数占位符,实际执行的SQL等效于LIKE '%%',因此会匹配所有NAME列非空的行。而$不是FireDAC的默认占位符,所以对应查询能正常返回结果。

解决方法

有两种实用的处理方式:

1. 转义&字符

在FireDAC中,使用两个&来转义单个&,修改后的代码如下:

FDQuery1.SQL.Text := 'SELECT * FROM DATA WHERE NAME LIKE ''%&&%''';  
FDQuery1.Open();

2. 关闭参数占位符自动解析

通过设置FDQuery1.Params.ParseSQL为False,让FireDAC不再解析SQL中的&为参数,代码示例:

FDQuery1.Params.ParseSQL := False;
FDQuery1.SQL.Text := 'SELECT * FROM DATA WHERE NAME LIKE ''%&%''';  
FDQuery1.Open();

注意:如果你的SQL语句中需要正常使用参数占位符,这种方法会影响参数功能,需根据实际场景选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:12:31