summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Components/Expression.php9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Components/Expression.php b/src/Components/Expression.php
index 1ca0596..e407960 100644
--- a/src/Components/Expression.php
+++ b/src/Components/Expression.php
@@ -33,7 +33,7 @@ class Expression extends Component
* @var array
*/
private static $ALLOWED_KEYWORDS = array(
- 'AS' => 1, 'DUAL' => 1, 'NULL' => 1, 'REGEXP' => 1
+ 'AS' => 1, 'DUAL' => 1, 'NULL' => 1, 'REGEXP' => 1, 'CASE' => 1
);
/**
@@ -252,6 +252,13 @@ class Expression extends Component
}
$alias = true;
continue;
+ } elseif ($token->value === 'CASE') {
+ // For a use of CASE like
+ // 'SELECT a = CASE .... END, b=1, `id`, ... FROM ...'
+ $tempCaseExpr = CaseExpression::parse($parser, $list);
+ $ret->expr .= CaseExpression::build($tempCaseExpr);
+ $isExpr = true;
+ continue;
}
$isExpr = true;
} elseif ($brackets === 0 && count($ret->expr) > 0 && ! $alias) {