どんな場合でも使える方法ではないですが。
// これを
final String sqlBlock = "a.hoge=:hoge, a.moge=:moge, b.foo=IFNULL(a.foo, 'xxx')";
// このパーツに分解したい
// "a.hoge=:hoge"
// "a.moge=:moge"
// "b.foo=IFNULL(a.foo, 'xxx')"
単に sqlBlock.split(",")
でやってしまうと "b.foo=IFNULL(a.foo,"
と " 'xxx')"
に分割されてしまって悲しい。
正規表現の否定後読みを使って
sqlBlock.split("(?<!\([a-zA-Z.]+), ");
これでなんとかなりました。