在使用sqlsugar条件查询时,条件中如果使用Contains,如果需要自定义条件,需保证类型一致
目标需求:生成
WHERE ('[1],[2],[3]' like concat('%', concat( concat( '[', CAST(`orderState` AS CHAR)) , ']') ,'%'))
为条件的查询语句
- //orderStates为字符串 '[1],[2],[3]'
- //如果orderState为非字符串型,需将其转换为字符串在进行字符串连接操作
- query = query.Where(a => orderStates.Contains("[" + a.orderState.ToString() + "]") );
- //生成的查询语句: WHERE (@MethodConst0 like concat('%', concat( concat( @Const1 , CAST(`orderState` AS CHAR)) , @Const2 ) ,'%'))
- //@MethodConst0为:'[1],[2],[3]'
- //@Const1为:'['
- //@Const2为:']'
-
- //如果不进行转换,导致和需要生成的查询条件不符
- query = query.Where(a => orderStates.Contains("[" + a.orderState + "]") );
- query = query.Where(a => orderStates.Contains("[" + a.orderState.ToString() + "]") );
- //生成的查询语句: WHERE (@MethodConst0 like concat('%', concat((@Const1 +`orderState`),@Const2 ) ,'%'))