public static void main(String[] args) {
Function fun = new CommonFunction() {
@Override
public String getName() {
return "contains";
}
@Override
public Object call(Object[] arguments) {
if (arguments != null && arguments.length > 0) {
String listString = (String) arguments[0];
String[] stringArray = listString.split(",");
List<String> list = Arrays.asList(stringArray);
String currentValue = String.valueOf(arguments[1]);
return list.contains(currentValue);
} else {
return false;
}
}
};
// 不带 '' 会被解析为变量替换,如果没有则填null
String el = " COLUMN1 == 1 || contains('1,2',COLUMN2) ";
FelEngine instance = FelEngine.instance;
instance.addFun(fun);
Map<String, Object> map = new HashMap<>();
map.put("COLUMN1", 1);
map.put("COLUMN2", 2);
MapContext context = new MapContext(map);
Object flag = instance.eval(el, context);
System.out.println(flag);
}
select *.id from A where not exists( select 1 from B where A.id = B.id)
-- 拿最新的money
select
#{businessDate},
money,
id,
'0'
from (
select
ROW_NUMBER() over(partition by id order by date desc) as row_id,
id,
money
from student
where date <= #{businessDate}
) tmp
where row_id = 1
select * from A
<WHERE>
<foreach collection="XXXList" item="XXX" open="(" close=")" separator="or">
A.filed_a = #{XXX} and A.filed_b in
<foreach collection="YYYList" item="YYY" open="(" close=")" separator=",">
#{YYY}
</foreach>
</foreach>
</WHERE>
where ( A.filed_a = #{XXX} and A.filed_b in (YYY,YYY) OR A.filed_a = #{XXX} and A.filed_b in (YYY,YYY) )
notpid++ 驼峰换下划线:
([a-z])([A-Z])
\1_\l\2
flatmap:扁平化操作,可以将二维数组合并为一个一维数组
// 合并两个集合,去重
Stream.of(Arrays.asList(a), Arrays.asList(b)).flatMap(Collection::stream).distinct().collect(Collectors.toList());
SELECT 'ALTER TABLE student DROP name' INTO @test_sql
FROM DUAL
WHERE (SELECT COUNT(1) FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'student' AND column_name = 'name') =1;
PREPARE test_stmt
FROM @test_sql;
EXECUTE test_stmt;
DEALLOCATE PREPARE test_stmt;
// A,B升序,C降序
list.sort(Comparator.ComparingInt(Student::getA)
.thenComparingInt(Student::getB)
.thenComparingInt(Student::getC,Comparator.reverseOrder())
);
转map 根据 A 升序
Map<Integer, List<Student>> map = list.collect(
Collectors.groupingBy(Student::getA, TreeMap::new, Collectors.toList()));
// 需要对属性假如属性为 id 为null进行分组
List<Student> list;
List<List<Student>> groupList;
list.stream().collect(Collectors.groupingBy(student->student.getBookId()==null?0:1,Collectors.toList())).forEach((bookId,tmpList)-> groupList.add(tmpList));
select name ,
age
sum(case when sex = 1 then money else 0 end ) as boy_money ,
sum(case when sex = 2 then money else 0 end ) as girl_money
from student
group by name ,age;