public static Builder builder() { return new Builder() { @Override protected SQLTemplates build(char escape, boolean quote) { return new SQLServerTemplates(escape, quote); } }; }
public SQLServerTemplates(char escape, boolean quote) { super("\"", escape, quote); setDummyTable(""); setNullsFirst(null); setNullsLast(null); setDefaultValues("\ndefault values"); setArraysSupported(false); setPrecedence(Precedence.ARITH_LOW, Ops.NEGATE); setPrecedence(Precedence.COMPARISON, Ops.EQ, Ops.EQ_IGNORE_CASE, Ops.NE); setPrecedence(Precedence.OR, Ops.BETWEEN, Ops.IN, Ops.NOT_IN, Ops.LIKE, Ops.LIKE_ESCAPE); setPrecedence(Precedence.OR, OTHER_LIKE_CASES); add(Ops.CONCAT, "{0} + {1}"); add(Ops.CHAR_AT, "cast(substring({0},{1}+1,1) as char)"); add(Ops.INDEX_OF, "charindex({1},{0})-1", Precedence.ARITH_LOW); add(Ops.INDEX_OF_2ARGS, "charindex({1},{0},{2})-1", Precedence.ARITH_LOW); add(Ops.MATCHES, "{0} like {1}", Precedence.OR); add(Ops.STRING_IS_EMPTY, "len({0}) = 0", Precedence.COMPARISON); add(Ops.STRING_LENGTH, "len({0})"); add(Ops.SUBSTR_1ARG, "substring({0},{1}+1,255)"); add(Ops.SUBSTR_2ARGS, "substring({0},{1}+1,{2s}-{1s})"); add(Ops.TRIM, "ltrim(rtrim({0}))"); add(Ops.StringOps.LOCATE, "charindex({0},{1})"); add(Ops.StringOps.LOCATE2, "charindex({0},{1},{2})"); add(Ops.StringOps.LPAD, "right(replicate(' ', {1}) + left({0}, {1}), {1})"); add(Ops.StringOps.LPAD2, "right(replicate({2}, {1}) + left({0}, {1}), {1})");
@Override protected String escapeForLike(String str) { final StringBuilder rv = new StringBuilder(str.length() + 3); for (char ch : str.toCharArray()) { if (ch == getEscapeChar() || ch == '%' || ch == '_' || ch == '[') { rv.append(getEscapeChar()); } rv.append(ch); } return rv.toString(); }
sqlTemplate = TeradataTemplates.builder(); } else if (SQLTemplatesConstants.DB_PRODUCT_NAME_SYBASE.equals(dbType)) { sqlTemplate = SQLServerTemplates.builder(); } else if (SQLTemplatesConstants.DB_PRODUCT_NAME_SQLSERVER.equals(dbType)) { if (majorVersion < 9) { sqlTemplate = SQLServerTemplates.builder(); } else if (majorVersion == 9) { sqlTemplate = SQLServer2005Templates.builder();
return SQLServerTemplates.builder();
@Override protected SQLTemplates build(char escape, boolean quote) { return new SQLServerTemplates(escape, quote); } };
private static SQLTemplates.Builder findDialectBuilder(final DatabaseConfig databaseConfig) { if (databaseConfig.isMySql()) { return MySQLTemplates.builder(); } if (databaseConfig.isPostgres()) { return PostgresTemplates.builder(); } if (databaseConfig.isOracle()) { return OracleTemplates.builder(); } if (databaseConfig.isSqlServer()) { return SQLServerTemplates.builder(); } if (databaseConfig.isH2()) { return H2Templates.builder(); } // should be removed in 8.0; only required during migration of 6.x HSQL installation to 7.x H2 if (databaseConfig.isHSql()) { return HSQLDBTemplates.builder(); } throw new IllegalStateException("Unrecognised database dialect '" + databaseConfig.getDatabaseType() + "'."); }
public SQLServerQueryFactory(Provider<Connection> connection) { this(new Configuration(new SQLServerTemplates()), connection); }
public SQLServerQuery(Connection conn) { this(conn, new SQLServerTemplates(), new DefaultQueryMetadata()); }
public static SQLTemplates getSQLTemplates() { switch (target.get()) { case CUBRID:return new CUBRIDTemplates(); case DERBY: return new DerbyTemplates(); case H2: return new H2Templates(); case HSQLDB:return new HSQLDBTemplates(); case SQLSERVER: return new SQLServerTemplates(); case MYSQL: return new MySQLTemplates(); case ORACLE:return new OracleTemplates(); case POSTGRES: return new PostgresTemplates(); case SQLITE:return new SQLiteTemplates(); case TERADATA: return new TeradataTemplates(); } throw new IllegalStateException("Unknown mode " + mode); }
@Test public void FunctionCall() { //select tab.col from Table tab join TableValuedFunction('parameter') func on tab.col not like func.col QSurvey table = new QSurvey("SURVEY"); RelationalFunctionCall<String> func = RelationalFunctionCall.create(String.class, "TableValuedFunction", "parameter"); PathBuilder<String> funcAlias = new PathBuilder<String>(String.class, "tokFunc"); SQLSubQuery sq = new SQLSubQuery(); SubQueryExpression<?> expr = sq.from(table) .join(func, funcAlias).on(table.name.like(funcAlias.getString("prop")).not()).list(table.name); Configuration conf = new Configuration(new SQLServerTemplates()); SQLSerializer serializer = new NativeSQLSerializer(conf, true); serializer.serialize(expr.getMetadata(), false); assertEquals("select SURVEY.NAME\n" + "from SURVEY SURVEY\n" + "join TableValuedFunction(?1) as tokFunc\n" + "on not (SURVEY.NAME like tokFunc.prop escape '\\')", serializer.toString()); }