diff --git a/test/it/binder/pom.xml b/test/it/binder/pom.xml
new file mode 100644
index 0000000000000..ad118b4367d1e
--- /dev/null
+++ b/test/it/binder/pom.xml
@@ -0,0 +1,152 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.shardingsphere
+ shardingsphere-test-it
+ 5.5.2-SNAPSHOT
+
+ shardingsphere-test-it-binder
+ ${project.artifactId}
+
+
+ true
+
+
+
+
+ org.apache.shardingsphere
+ shardingsphere-test-it-parser
+ ${project.version}
+ compile
+
+
+ org.apache.shardingsphere
+ shardingsphere-infra-binder
+ ${project.version}
+ compile
+
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-sql92
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-mysql
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-postgresql
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-oracle
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-sqlserver
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-opengauss
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-firebird
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-hive
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-presto
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-doris
+ ${project.version}
+ test
+
+
+ org.apache.shardingsphere
+ shardingsphere-parser-sql-clickhouse
+ ${project.version}
+ test
+
+
+
+ org.apache.shardingsphere
+ shardingsphere-test-util
+ ${project.version}
+ compile
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ compile
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ compile
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ compile
+
+
+ org.hamcrest
+ hamcrest
+ compile
+
+
+ org.mockito
+ mockito-core
+ compile
+
+
+ org.mockito
+ mockito-junit-jupiter
+ ${mockito.version}
+ compile
+
+
+
diff --git a/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java b/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java
new file mode 100644
index 0000000000000..657bc809b5384
--- /dev/null
+++ b/test/it/binder/src/test/java/org/apache/shardingsphere/test/it/sql/binder/SQLBinderIT.java
@@ -0,0 +1,187 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.test.it.sql.binder;
+
+import com.google.common.base.Preconditions;
+import org.apache.shardingsphere.infra.binder.engine.SQLBindEngine;
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import org.apache.shardingsphere.infra.hint.HintValueContext;
+import org.apache.shardingsphere.infra.hint.SQLHintUtils;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.sql.parser.api.CacheOption;
+import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
+import org.apache.shardingsphere.sql.parser.api.SQLStatementVisitorEngine;
+import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import org.apache.shardingsphere.test.it.sql.binder.cases.binder.registry.SQLBinderTestCasesRegistry;
+import org.apache.shardingsphere.test.it.sql.binder.cases.sql.registry.SQLBinderCasesRegistry;
+import org.apache.shardingsphere.test.it.sql.parser.internal.InternalSQLParserTestParameter;
+import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.SQLStatementAssert;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.SQLParserTestCases;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.SQLCases;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.sql.type.SQLCaseType;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.ArgumentsProvider;
+import org.junit.jupiter.params.provider.ArgumentsSource;
+
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.mockito.Mockito.mock;
+
+public abstract class SQLBinderIT {
+
+ private static final SQLCases SQL_CASES = SQLBinderCasesRegistry.getInstance().getCases();
+
+ private static final SQLParserTestCases SQL_BINDER_TEST_CASES = SQLBinderTestCasesRegistry.getInstance().getCases();
+
+ @ParameterizedTest(name = "{0} ({1}) -> {2}")
+ @ArgumentsSource(TestCaseArgumentsProvider.class)
+ void assertBind(final String sqlCaseId, final SQLCaseType sqlCaseType, final String databaseType) {
+ String sql = SQL_CASES.getSQL(sqlCaseId, sqlCaseType, SQL_BINDER_TEST_CASES.get(sqlCaseId).getParameters());
+ SQLParserTestCase expected = SQL_BINDER_TEST_CASES.get(sqlCaseId);
+ SQLStatement actual = bindSQLStatement("H2".equals(databaseType) ? "MySQL" : databaseType, sql, new ArrayList<>(expected.getParameters()));
+ SQLStatementAssert.assertIs(new SQLCaseAssertContext(sqlCaseId, sql, expected.getParameters(), sqlCaseType), actual, expected);
+ }
+
+ private SQLStatement bindSQLStatement(final String databaseType, final String sql, final List