diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php
index 16b3b3c600..ca8846b60d 100644
--- a/phpBB/includes/db/mssql.php
+++ b/phpBB/includes/db/mssql.php
@@ -91,6 +91,18 @@ class dbal_mssql extends dbal
return ($this->sql_server_version) ? 'MSSQL
' . $this->sql_server_version : 'MSSQL';
}
+ /**
+ * {@inheritDoc}
+ */
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php
index c1ee1b43f0..814dd76373 100644
--- a/phpBB/includes/db/mssql_odbc.php
+++ b/phpBB/includes/db/mssql_odbc.php
@@ -109,6 +109,18 @@ class dbal_mssql_odbc extends dbal
return ($this->sql_server_version) ? 'MSSQL (ODBC)
' . $this->sql_server_version : 'MSSQL (ODBC)';
}
+ /**
+ * {@inheritDoc}
+ */
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php
index db1bb86620..c6c34c8612 100644
--- a/phpBB/includes/db/mssqlnative.php
+++ b/phpBB/includes/db/mssqlnative.php
@@ -257,6 +257,18 @@ class dbal_mssqlnative extends dbal
return ($this->sql_server_version) ? 'MSSQL
' . $this->sql_server_version : 'MSSQL';
}
+ /**
+ * {@inheritDoc}
+ */
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php
index 2e801532f0..f09e702951 100644
--- a/phpBB/includes/db/oracle.php
+++ b/phpBB/includes/db/oracle.php
@@ -89,6 +89,18 @@ class dbal_oracle extends dbal
return $this->sql_server_version;
}
+ /**
+ * {@inheritDoc}
+ */
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS clob)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS clob)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
/**
* SQL Transaction
* @access private
diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php
index dddf615f9c..a27fbb9d9f 100644
--- a/phpBB/includes/db/postgres.php
+++ b/phpBB/includes/db/postgres.php
@@ -154,6 +154,18 @@ class dbal_postgres extends dbal
return ($raw) ? $this->sql_server_version : 'PostgreSQL ' . $this->sql_server_version;
}
+ /**
+ * {@inheritDoc}
+ */
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS TEXT)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS TEXT)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
/**
* {@inheritDoc}
*/