Share via


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

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
    Cualquier expresión válida.

  • expression2
    Cualquier expresión válida.

Tipos de resultado

Tipo de datos de expression1 o expression2.

Comentarios

Si boolean_expression devuelve 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 requiere que expression1 y expression2 tengan la misma página de códigos.

  • 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:

  • Numeric   expression1 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 obtener más información, vea Conversión implícita de tipo de datos en expresiones.

  • String   expression1 y expression2 deben ser 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/Time   expression1 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 obtener más información, vea Tipos de datos de Integration Services en las expresiones.

    • 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 Tipos de datos de Integration Services.

Ejemplos

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 ó 0,1.

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