这很好用:
Query = 'SELECT * from table_1 where code = :value; ';
然而,我正在尝试使用LIKE语句,它说它无法找到参数VALUE在这种情况下:
Query = 'SELECT * from table_1 where code LIKE ''%:value;%''';
Param := ADOQuery1.Parameters.ParamByName('value');
Param.DataType := ftString;
Param.Value := 'bob';
我想使用反斜杠来忽略引号,因为它适用于大多数语言,但看起来它在Delphi中不起作用。
答案 0 :(得分:5)
参数会自动为您提供字符串引号。因此,您不能在SQL查询中包含此类引号。因此,您也无法通过查询传递%F6
语法。
相反,请将您的陈述保留为原始陈述(将%
替换为=
),然后将LIKE
传递给实际值。
%
另一方面,这段代码更优雅......
Query = 'SELECT * from table_1 where code LIKE :value';
Param := ADOQuery1.Parameters.ParamByName('value');
Param.DataType := ftString;
Param.Value := '%bob%';
无需告诉它它是一个字符串。它会自动检测到。
答案 1 :(得分:1)
“无需告诉它它是一个字符串(Param.DataType
)。它会自动检测到它。”
总的来说,这是事实。
实际上,它取决于某些TConnection
属性,例如.ParamCreate
,.ResourceOptions.AssignedValue.rvParamCreate
,.ResourceOptions.AssignedValue.rvDefaultParamType=false
和defaultParamDataType
。如果这些属性没有改变那么
会自动检测到
所以在某些情况下这是明确的。