diff --git a/tests/postgres_tests/test_constraints.py b/tests/postgres_tests/test_constraints.py
index 0e09a1c546..24557939ee 100644
--- a/tests/postgres_tests/test_constraints.py
+++ b/tests/postgres_tests/test_constraints.py
@@ -4,7 +4,7 @@ from django.db.models.constraints import CheckConstraint
 from django.db.utils import IntegrityError
 
 from . import PostgreSQLTestCase
-from .models import RangesModel
+from .models import CharFieldModel, RangesModel
 
 try:
     from psycopg2.extras import NumericRange
@@ -33,3 +33,19 @@ class SchemaTests(PostgreSQLTestCase):
         with self.assertRaises(IntegrityError), transaction.atomic():
             RangesModel.objects.create(ints=(20, 50))
         RangesModel.objects.create(ints=(10, 30))
+
+    def test_check_constraint_startswith(self):
+        constraint_name = 'char_startswith_bar'
+        self.assertNotIn(constraint_name, self.get_constraints(CharFieldModel._meta.db_table))
+        constraint = CheckConstraint(
+            check=Q(field__startswith='BAR'),
+            name=constraint_name,
+        )
+        with connection.schema_editor() as editor:
+            editor.add_constraint(CharFieldModel, constraint)
+        with connection.cursor() as cursor:
+            constraints = connection.introspection.get_constraints(cursor, CharFieldModel._meta.db_table)
+        self.assertIn(constraint_name, constraints)
+        with self.assertRaises(IntegrityError), transaction.atomic():
+            CharFieldModel.objects.create(field='FOO')
+        CharFieldModel.objects.create(field='BAR1')
