CASE Function
Syntax
Arguments
- condition_1Logical
Logical. An expression that evaluates to .T. (TRUE) or .F. (FALSE).
- value_1Any Type
The value returned if condition_1 evaluates to .t.
- condition_NLogical
Additional conditional statement that evaluates to .T. (TRUE) or .F. (FALSE). A maximum of 15 additional conditional expressions can be specified.
- value_NAny Type
The corresponding values returned for the specified condition. A result is required for each condition specified.
Returns
- ValueAny Type
Returns the value that for the first condition that evaluates to .t..
Description
Returns the corresponding value for the first condition that evaluates to true (.t.)
Discussion
CASE() returns the value (Value_1 ... Value_N) specified by the first expression (Condition_1...Condition_N) that evaluates to .T. (TRUE). A maximum 16 cases can be specified.
The CASE() function can be used to specify filter and order statements for searching and sorting records.
Example: Basic Example
dim TEMP as N TEMP = 30 ? case(TEMP < 32, "Cold", TEMP < 65, "Cool", TEMP < 80, "Warm", TEMP >= 80, "Really Hot") = "Cold" TEMP = 75 ? case(TEMP < 32, "Cold", TEMP < 65, "Cool", TEMP < 80, "Warm", TEMP >= 80, "Really Hot") = "Warm" TEMP = 90 ? case(TEMP < 32, "Cold", TEMP < 65, "Cool", TEMP < 80, "Warm", TEMP >= 80, "Really Hot") = "Really Hot"
Example: Filter Records
If you wanted to filter records for a limited number of specific values, you use this type of expression, which will examine the firstname field and select records containing the values "John", "Peter", and "Sally".
case( "John" $ firstname, .t., "Peter" $ firstname, .t., "Sally" $ firstname, .t. )
Example: Sorting Records
You can create an explicit order for records using the CASE() function. For example:
case(containsi("Jan Feb Mar",month), 1, containsi("Apr May Jun",month), 2, containsi("Jul Aug Sep",month), 3, containsi("Oct Nov Dec",month), 4)
See Also