Compartir a través de


Función de conversión de tipo de datos explícito

La conversión explícita de tipos de datos se especifica en términos de definiciones de tipo de datos SQL.

La sintaxis ODBC de la función de conversión de tipos de datos explícita no restringe las conversiones. Cada implementación específica determinará la validez de conversiones específicas de un tipo de datos a otro tipo de datos. El controlador, ya que traduce la sintaxis ODBC a la sintaxis nativa, rechaza esas conversiones que, aunque son legales en la sintaxis ODBC, no son compatibles con el origen de datos. La función ODBC SQLGetInfo, con las opciones de conversión (como SQL_CONVERT_BIGINT, SQL_CONVERT_BINARY, SQL_CONVERT_INTERVAL_YEAR_MONTH, etc.), proporciona una manera de consultar las conversiones admitidas por el origen de datos.

El formato de la función CONVERT es:

CONVERT( value_exp, data_type)

La función devuelve el valor especificado por value_exp convertido al data_type especificado, donde data_type es una de las siguientes palabras clave:

SQL_BIGINT
SQL_BINARY
SQL_BIT
SQL_CHAR
SQL_DATE
SQL_DECIMAL
SQL_DOUBLE
SQL_FLOAT
SQL_GUID
SQL_INTEGER
SQL_INTERVAL_DAY
SQL_INTERVAL_DAY_TO_HOUR

SQL_INTERVAL_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND
SQL_INTERVAL_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH
SQL_INTERVAL_SECOND
SQL_INTERVAL_YEAR
SQL_INTERVAL_YEAR_TO_MONTH
SQL_LONGVARBINARY

SQL_LONGVARCHAR
SQL_NUMERIC
SQL_REAL
SQL_SMALLINT
SQL_TIME
SQL_TIMESTAMP
SQL_TINYINT
SQL_VARBINARY
SQL_VARCHAR
SQL_WCHAR
SQL_WLONGVARCHAR
SQL_WVARCHAR

La sintaxis ODBC de la función de conversión de tipos de datos explícita no admite la especificación del formato de conversión. Si la especificación de formatos explícitos es compatible con el origen de datos subyacente, un controlador debe especificar un valor predeterminado o implementar la especificación de formato.

El argumento value_exp puede ser un nombre de columna, el resultado de otra función escalar o un literal numérico o de cadena. Por ejemplo:

{ fn CONVERT( { fn CURDATE() }, SQL_CHAR ) }  

convierte la salida de la función escalar CURDATE en una cadena de caracteres.

Dado que ODBC no exige un tipo de datos para los valores devueltos de funciones escalares (porque las funciones suelen ser específicas del origen de datos), las aplicaciones deben usar la función escalar CONVERT siempre que sea posible para forzar la conversión de tipos de datos.

En los dos ejemplos siguientes se muestra el uso de la función CONVERT . En estos ejemplos se supone que existe una tabla denominada EMPLOYEES, con una columna EMPNO de tipo SQL_SMALLINT y una columna EMPNAME de tipo SQL_CHAR.

Si una aplicación especifica la siguiente instrucción SQL:

SELECT EMPNO FROM EMPLOYEES WHERE {fn CONVERT(EMPNO,SQL_CHAR)} LIKE '1%'  
  • Un controlador para ORACLE traduce la instrucción SQL a:

    SELECT EMPNO FROM EMPLOYEES WHERE to_char(EMPNO) LIKE '1%'  
    
  • Un controlador para SQL Server traduce la instrucción SQL a:

    SELECT EMPNO FROM EMPLOYEES WHERE convert(char,EMPNO) LIKE '1%'  
    

Si una aplicación especifica la siguiente instrucción SQL:

SELECT {fn ABS(EMPNO)}, {fn CONVERT(EMPNAME,SQL_SMALLINT)}  
   FROM EMPLOYEES WHERE EMPNO <> 0  
  • Un controlador para ORACLE traduce la instrucción SQL a:

    SELECT abs(EMPNO), to_number(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0  
    
  • Un controlador para SQL Server traduce la instrucción SQL a:

    SELECT abs(EMPNO), convert(smallint, EMPNAME) FROM EMPLOYEES  
       WHERE EMPNO <> 0  
    
  • Un controlador para Entrada traduce la instrucción SQL a:

    SELECT abs(EMPNO), int2(EMPNAME) FROM EMPLOYEES WHERE EMPNO <> 0