Cómo utilizar elenco conversiones de tipo de datos con SQL

Idealmente, cada columna de una tabla de base de datos SQL tiene una perfecta elección del tipo de datos. En este mundo no ideal, sin embargo, exactamente lo que la elección perfecta puede ser no siempre es clara. En la definición de una tabla de base de datos, supongamos que asigna un tipo de datos a una columna que funciona a la perfección para su aplicación actual.

Supongamos que después desea ampliar el alcance de su aplicación - o escribir una nueva aplicación que utiliza los datos de manera diferente. Este nuevo uso podría requerir un tipo de datos diferente a la que eligió originalmente.

Es posible que desee comparar una columna de un tipo en una tabla con una columna de un tipo diferente en una tabla diferente. Por ejemplo, usted podría tener fechas almacenados como datos de caracteres en una mesa y como datos de fecha en otra mesa.

Incluso si ambas columnas contienen el mismo tipo de información (fechas, por ejemplo), el hecho de que los tipos son diferentes puede evitar que hacer la comparación. En los primeros estándares SQL, SQL-86 y SQL-89, tipo de incompatibilidad que plantea un gran problema. SQL-92, sin embargo, presentó una solución fácil de uso en el ELENCO expresión.

los ELENCO expresión convierte datos de la tabla o variables del lenguaje principal de un tipo a otro tipo. Después de realizar la conversión, se puede proceder con la operación o el análisis que imaginó en un principio.

Naturalmente, se enfrenta a ciertas restricciones al utilizar la ELENCO expresión. Puede no sólo indiscriminadamente convertir los datos de cualquier tipo en cualquier otro tipo. Los datos que va a convertir debe ser compatible con el nuevo tipo de datos. Puede, por ejemplo, utilizar ELENCO para convertir el CHAR (10) cadena de caracteres '2007-04-26' al FECHA escribe.

Pero no se puede utilizar ELENCO para convertir el CHAR (10) cadena de caracteres 'rinoceronte' al FECHA escribe. No se puede convertir un INTEGER al SMALLINT escriba si el primero sea superior al tamaño máximo de un SMALLINT.

Usted puede convertir un objeto de cualquier tipo de carácter a cualquier otro tipo (como numérico o fecha) proporcionado el valor del artículo tiene la forma de un literal del nuevo tipo. A la inversa, puede convertir un objeto de cualquier tipo a ninguno de los tipos de caracteres, siempre que el valor del elemento tiene la forma de un literal de tipo original.

La siguiente lista describe algunas conversiones adicionales que puede realizar:

  • Cualquier tipo numérico a cualquier otro tipo numérico. Si la conversión de un tipo menos marginalmente precisa, las rondas del sistema o trunca el resultado.

  • Cualquier tipo numérico exacto con un intervalo de un solo componente, como DÍA INTERVALO o INTERVALO SEGUNDO.

  • Alguna FECHA a una TIMESTAMP. La parte del tiempo TIMESTAMP rellena con ceros.

  • Alguna HORA a una HORA con un fraccionarias segundos precisión o una diferente TIMESTAMP. La parte de fecha del TIMESTAMP rellena con la fecha actual.

  • Alguna TIMESTAMP a una FECHA, la HORA, o una TIMESTAMP con diferentes fracciones de segundos precisión.

  • Cualquier año-mes INTERVALO a un tipo numérico exacto u otro mes del año INTERVALO con diferente precisión líder de campo.

  • Cada Tiempo días INTERVALO a un tipo numérico exacto u otro durante el día INTERVALO con diferente precisión líder de campo.

Cómo utilizar REPARTO dentro de SQL

Supongamos que usted trabaja para una empresa que realiza un seguimiento de los posibles empleados, así como los empleados que en realidad ha contratado. Usted enumera los posibles empleados en una tabla llamada PERSPECTIVA, y que las distinguen por sus números de Seguro Social, lo que le sucede a almacenar como CHAR (9) escribe.

Usted enumera los empleados en una tabla llamada EMPLEADO, y que las distinguen por sus números de Seguro Social, que son del INTEGER escribe. Ahora desea generar una lista de todas las personas que aparecen en ambas tablas. Puedes usar ELENCO para realizar la tarea:

SELECT * FROM EMPLOYEEWHERE EMPLOYEE.SSN = CAST (PROSPECT.SSN AS INTEGER) -

Cómo utilizar REPARTO entre SQL y la lengua de acogida

El uso fundamental de ELENCO es para hacer frente a los tipos de datos que están disponibles en SQL, pero no en la lengua de acogida que utilice. La siguiente lista ofrece algunos ejemplos de estos tipos de datos:

  • SQL tiene DECIMAL y NUMÉRICA, pero FORTRAN y Pascal no.

  • SQL tiene FLOAT y RAÍCES, pero COBOL estándar no lo hace.

  • SQL tiene FECHA Y HORA, que ningún otro idioma tiene.

Suponga que desea usar FORTRAN o Pascal a las tablas de acceso con DECIMAL (5,3) columnas, y usted no quiere cualquier inexactitud que resultan de la conversión de los valores a la RAÍCES tipo de datos utilizado por FORTRAN y Pascal. Puede realizar esta tarea mediante el uso de ELENCO para mover los datos hacia y desde variables del lenguaje principal de caracteres de la cadena.

Recuperar un salario numérica de 198.37 como CHAR (10) valor de '0.000.198,37'. Entonces, si usted desea actualizar ese salario a 203.74, puede colocar ese valor en un CHAR (10) como '0.000.203,74'. En primer lugar se utiliza ELENCO para cambiar el SQL DECIMAL (5,3) tipo de datos a la CHAR (10) escribir para el empleado cuyo número de identificación que está almacenando en la variable de acogida : emp_id_var, como sigue:

SELECT CAST (Salario AS CHAR (10)) EN: salary_varFROM EMPWHERE EmpID =: emp_id_var -

La aplicación FORTRAN o Pascal examina el valor de cadena de caracteres que resulta en : salary_var, posiblemente establece la cadena a un nuevo valor de '000.203,74', y luego actualiza la base de datos llamando al siguiente código SQL:

ACTUALIZACIÓN EMPSET Salario = CAST (: salary_var AS DECIMAL (5,3)) DONDE EmpID =: emp_id_var -

Tratar con los valores de caracteres de cadena como '000.198,37' es torpe en FORTRAN o Pascal, pero usted puede escribir un conjunto de subrutinas para hacer las manipulaciones necesarias. A continuación, puede recuperar y actualizar los datos de SQL desde cualquier lengua de acogida, y obtener - y establecer - valores exactos.

La idea general es que ELENCO es más valioso para la conversión entre tipos de host y la base de datos en vez de para la conversión dentro de la base de datos.




» » » » Cómo utilizar elenco conversiones de tipo de datos con SQL