Sqlite 特殊字符搜索无法查询 % _等符号无法处理 返回
增加SqlSugarSetup.Db.Utilities.EscapeLikeValue(input.Keyword);特殊字符处理生成如下sql:
SELECT `p`.*, `b`.`BrandName` AS `BrandName` FROM `edge_base_protocol` `p` Left JOIN `edge_base_brand` `b` ON ( `p`.`Base_BrandId` = `b`.`ID` ) WHERE ((`p`.`ProtocolCode` like '%'||@MethodConst0||'%') OR (`p`.`ProtocolName` like '%'||@MethodConst1||'%') ) ORDER BY `p`.`CreationTime` DESC LIMIT 0,10
{"@MethodConst0":"\\%","@MethodConst1":"\\%"}
结果还是无法查询%号的数据
网上搜索正常过滤特殊字符语句SELECT * FROM table WHERE number LIKE '%/%%' escape '/'
当前版本5.1.4.206
热忱回答(13)
-
SqlSugarCore 5.1.4.208-preview04
已修复。 过五分钟更新到预览版本04
0 回复 -
fate sta VIP0
2周前这样就行了SqlSugarSetup.Db.Utilities.EscapeLikeValue(“%”);
0 回复 -
Nelly VIP0
2周前@fate stay night:
收到,已解决0 回复 -
Nelly VIP0
2周前@fate stay night:
SELECT `p`.*, `b`.`BrandName` AS `BrandName` FROM `edge_base_protocol` `p` Left JOIN `edge_base_brand` `b` ON ( `p`.`Base_BrandId` = `b`.`ID` ) WHERE ((`p`.`ProtocolCode` like '%'||@MethodConst0||'%') OR (`p`.`ProtocolName` like '%'||@MethodConst1||'%') ) ORDER BY `p`.`CreationTime` DESC LIMIT 0,10
{"@MethodConst0":"\\_","@MethodConst1":"\\_"}
_下划线特殊符号没有处理好 var Keyword = SqlSugarSetup.Db.Utilities.EscapeLikeValue(input.Keyword,'_'); 增加下划线也无法查询
0 回复 -
Nelly VIP0
2周前@Nelly:_ 查询出来是所有记录无筛选
建议检查下特殊符号处理
public static String sqliteEscape(String keyWord){
keyWord = keyWord.replace("/", "//");
keyWord = keyWord.replace("'", "''");
keyWord = keyWord.replace("[", "/[");
keyWord = keyWord.replace("]", "/]");
keyWord = keyWord.replace("%", "/%");
keyWord = keyWord.replace("&","/&");
keyWord = keyWord.replace("_", "/_");
keyWord = keyWord.replace("(", "/(");
keyWord = keyWord.replace(")", "/)");
return keyWord;
}
0 回复 -
fate sta VIP0
2周前keyWord传的是的什么值
0 回复 -
Nelly VIP0
2周前@fate sta:_ 下划线 你们没有处理 我自行增加第二个参数,你们SQL语句没有增加esape这个关键字
SELECT `p`.*, `b`.`BrandName` AS `BrandName` FROM `edge_base_protocol` `p` Left JOIN `edge_base_brand` `b` ON ( `p`.`Base_BrandId` = `b`.`ID` ) WHERE ((`p`.`ProtocolCode` like '%'||@MethodConst0||'%') OR (`p`.`ProtocolName` like '%'||@MethodConst1||'%') ) ORDER BY `p`.`CreationTime` DESC LIMIT 0,10
{"@MethodConst0":"\\_","@MethodConst1":"\\_"}
_下划线特殊符号没有处理好 var Keyword = SqlSugarSetup.Db.Utilities.EscapeLikeValue(input.Keyword,'_'); 增加下划线也无法查询
版本号已经更新至预览版04
0 回复 -
fate sta VIP0
2周前sqlite下划线不需要转换。
0 回复 -
fate sta VIP0
2周前直接_就行了不需要转
0 回复 -
Nelly VIP0
2周前@fate sta:
0 回复 -
Nelly VIP0
2周前
0 回复 -
fate sta VIP0
2周前SqlSugarCore 5.1.4.208-preview05
0 回复 -
Nelly VIP0
2周前@fate sta:
更新至05版本已解决。谢谢
var Keyword = SqlSugarSetup.Db.Utilities.EscapeLikeValue(input.Keyword); 没有自动增加\
SELECT COUNT(1) FROM (SELECT `p`.*, `b`.`BrandName` AS `BrandName` FROM `edge_base_protocol` `p` Left JOIN `edge_base_brand` `b` ON ( `p`.`Base_BrandId` = `b`.`ID` ) WHERE ((`p`.`ProtocolCode` like '%'||@MethodConst0||'%') OR (`p`.`ProtocolName` like '%'||@MethodConst1||'%') ) ) CountTable
{"@MethodConst0":"_","@MethodConst1":"_"}
var Keyword = SqlSugarSetup.Db.Utilities.EscapeLikeValue(input.Keyword,'_'); 增加\但是查询语句没有增加esape
SELECT `p`.*, `b`.`BrandName` AS `BrandName` FROM `edge_base_protocol` `p` Left JOIN `edge_base_brand` `b` ON ( `p`.`Base_BrandId` = `b`.`ID` ) WHERE ((`p`.`ProtocolCode` like '%'||@MethodConst0||'%') OR (`p`.`ProtocolName` like '%'||@MethodConst1||'%') ) ORDER BY `p`.`CreationTime` DESC LIMIT 0,10
{"@MethodConst0":"\\_","@MethodConst1":"\\_"}
0 回复