Compartir vía


? : (Condicional) (expresión de SSIS)

Se aplica a:SQL Server SSIS Integration Runtime en Azure Data Factory

Devuelve una de dos expresiones en función del resultado de la evaluación de una expresión booleana. Si la evaluación de la expresión booleana devuelve TRUE, se evalúa la primera expresión y el resultado es el resultado de la expresión. Si devuelve FALSE, se evalúa la segunda expresión y el resultado es el resultado de la expresión.

Sintaxis

  
boolean_expression?expression1:expression2  
  

Argumentos

boolean_expression
Cualquier expresión válida cuya evaluación devuelva TRUE, FALSE o NULL.

expression1
Es cualquier expresión válida.

expression2
Es cualquier expresión válida.

Tipos de resultado

Tipo de datos de expression1 o expression2.

Observaciones

Si el valor boolean_expression se evalúa como NULL, el resultado de la expresión es NULL. Si una expresión seleccionada, expression1 o expression2 , es NULL, el resultado es NULL. Si la expresión seleccionada no es NULL, pero la expresión no seleccionada es NULL, el resultado será el valor de la expresión seleccionada.

Si expression1 y expression2 tienen el mismo tipo de datos, el resultado será ese tipo de datos. Además, las reglas siguientes se aplican a los tipos de resultado:

  • El tipo de datos DT_TEXT necesita que expression1 y expression2 tengan la misma página de código.

  • La longitud de un resultado con el tipo de datos DT_BYTES es la del argumento más largo.

El conjunto de expresiones, expression1 y expression2, debe tener como resultado tipos de datos válidos y seguir una de estas reglas:

  • Numericexpression1 y expression2 deben ser un tipo de datos numérico. La intersección de los tipos de datos debe ser un tipo de datos numérico, tal como se especifica en las reglas para las conversiones numéricas implícitas que realiza el evaluador de expresiones. La intersección de dos tipos de datos numéricos no puede ser NULL. Para más información, consulte Integration Services Data Types in Expressions.

  • Cadenaexpression1 y expression2 deben tener un tipo de datos de cadena: DT_STR o DT_WSTR. Las dos expresiones pueden tener tipos de datos de cadena distintos. El resultado tiene el tipo de datos DT_WSTR con la longitud del argumento más largo.

  • Date, Time o Date/Timeexpression1 y expression2 deben devolver uno de los siguientes tipos de datos: DT_DBDATE, DT_DATE, DT_DBTIME, DT_DBTIME2, DT_DBTIMESTAMP, DT_DBTIMESTAMP2, DT_DBTIMESTAPMOFFSET o DT_FILETIME.

    Nota

    El sistema no admite comparaciones entre una expresión que devuelve un tipo de datos de hora y una expresión que devuelve un tipo de datos de fecha o de fecha/hora. El sistema genera un error.

    Al comparar expresiones, el sistema aplica las reglas de conversión siguientes en el orden enumerado:

    • Cuando las dos expresiones devuelven el mismo tipo de datos, se realiza una comparación de ese tipo de datos.

    • Si una expresión es un tipo de datos DT_DBTIMESTAMPOFFSET, la otra expresión se convierte en DT_DBTIMESTAMPOFFSET implícitamente y se realiza una comparación de DT_DBTIMESTAMPOFFSET. Para más información, consulte Integration Services Data Types in Expressions.

    • Si una expresión es un tipo de datos DT_DBTIMESTAMP2, la otra expresión se convierte en DT_DBTIMESTAMP2 implícitamente y se realiza una comparación de DT_DBTIMESTAMP2.

    • Si una expresión es un tipo de datos DT_DBTIME2, la otra expresión se convierte en DT_DBTIME2 implícitamente y se realiza una comparación de DT_DBTIME2.

    • Si una expresión es de un tipo de datos que no es DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 o DT_DBTIME2, las expresiones se convierten en el tipo de datos DT_DBTIMESTAMP antes de compararse.

    Al comparar las expresiones, el sistema hace las suposiciones siguientes:

    • Si cada expresión es un tipo de datos que incluye fracciones de segundo, el sistema supone que el tipo de datos con el menor número de dígitos por fracciones de segundo tiene ceros para los dígitos restantes.

    • Si cada expresión es un tipo de datos de fecha, pero solo una tiene un ajuste de zona horaria, el sistema supone que el tipo de datos de fecha sin ajuste de zona horaria está en hora universal coordinada (UTC).

Para obtener más información acerca de los tipos de datos, vea Integration Services Data Types.

Ejemplos de expresiones

En este ejemplo se muestra una expresión que se evalúa condicionalmente como savannah o unknown.

@AnimalName == "Elephant"? "savannah": "unknown"  

En este ejemplo se muestra una expresión que hace referencia a una columna ListPrice . ListPrice tiene el tipo de datos DT_CY. La expresión multiplica condicionalmente ListPrice por 0,2 o 0,1.

ListPrice < 350.00 ? ListPrice * .2 : ListPrice * .1  

Consulte también

Precedencia y capacidad de asociación de operadores
Operadores (expresión de SSIS)