private String buildUpdateConnection(String[] fieldNames, String[] uniqueKeyFields, boolean allReplace) {
        List<String> uniqueKeyList = Arrays.asList(uniqueKeyFields);
        return
            Arrays
                .stream(fieldNames)
                .filter(col -> !uniqueKeyList.contains(col))
                .map(col -> allReplace ?
                    quoteIdentifier("T1") + "." + quoteIdentifier(col) + " = " + quoteIdentifier("T2") + "." + quoteIdentifier(col) :
                    quoteIdentifier("T1") + "." + quoteIdentifier(col) + " =ISNULL(" + quoteIdentifier("T2") + "." + quoteIdentifier(col)
                        + "," + quoteIdentifier("T1") + "." + quoteIdentifier(col) + ")").collect(Collectors.joining(","));
    }
build    T1."A"=T2."A" or  T1."A"=nvl(T2."A",T1."A")

@param fieldNames
@param uniqueKeyFields
@param allReplace
@return
sqlserver/sqlserver-sink/src/main/java/com/dtstack/flink/sql/sink/sqlserver/SqlserverDialect.java