Fix #4401
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index df0ce6a..bad641d 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -1566,11 +1566,11 @@
 				'\s*>\s*',                       // >
 				'\s+IS NULL',                    // IS NULL
 				'\s+IS NOT NULL',                // IS NOT NULL
-				'\s+EXISTS\s*\([^\)]+\)',        // EXISTS(sql)
-				'\s+NOT EXISTS\s*\([^\)]+\)',    // NOT EXISTS(sql)
+				'\s+EXISTS\s*\(.*\)',        // EXISTS(sql)
+				'\s+NOT EXISTS\s*\(.*\)',    // NOT EXISTS(sql)
 				'\s+BETWEEN\s+',                 // BETWEEN value AND value
-				'\s+IN\s*\([^\)]+\)',            // IN(list)
-				'\s+NOT IN\s*\([^\)]+\)',        // NOT IN (list)
+				'\s+IN\s*\(.*\)',            // IN(list)
+				'\s+NOT IN\s*\(.*\)',        // NOT IN (list)
 				'\s+LIKE\s+\S.*('.$_les.')?',    // LIKE 'expr'[ ESCAPE '%s']
 				'\s+NOT LIKE\s+\S.*('.$_les.')?' // NOT LIKE 'expr'[ ESCAPE '%s']
 			);
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 1623341..8e76f1d 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -14,6 +14,7 @@
 -  Fixed a bug (#4384) - :doc:`Pagination Library <libraries/pagination>` ignored (possible) *cur_page* configuration value.
 -  Fixed a bug (#4395) - :doc:`Query Builder <database/query_builder>` method ``count_all_results()`` still fails if an ``ORDER BY`` condition is used.
 -  Fixed a bug (#4399) - :doc:`Query Builder <database/query_builder>` methods ``insert_batch()``, ``update_batch()`` produced confusing error messages when called with no data and *db_debug* is enabled.
+-  Fixed a bug (#4401) - :doc:`Query Builder <database/query_builder>` breaks ``WHERE`` and ``HAVING`` conditions that use ``IN()`` with strings containing a closing parenthesis.
 
 Version 3.0.4
 =============