Comment utiliser casting conversions de type de données avec SQL

Idéalement, chaque colonne dans une table de base de données SQL a un choix parfait du type de données. Dans ce monde non-idéal, cependant, exactement ce que cela peut être un choix parfait est pas toujours claire. En définissant une table de base de données, supposons que vous affectez un type de données à une colonne qui fonctionne parfaitement pour votre application actuelle.

Sommaire

Supposons que plus tard vous voulez élargir le champ de votre application - ou écrire une application entièrement nouvelle qui utilise les données différemment. Cette nouvelle utilisation pourrait exiger un type différent de celui que vous avez choisi à l'origine des données.

Vous pouvez comparer une colonne d'un type dans une table avec une colonne d'un type différent dans une autre table. Par exemple, vous pourriez avoir des dates stockées sous forme de données de caractère dans un tableau et que les données de date à une autre table.

Même si les deux colonnes contiennent le même type d'informations (dates, par exemple), le fait que les types sont différents peuvent vous empêcher de faire la comparaison. Dans les normes de SQL premiers, SQL-86 et SQL-89, de type incompatibilité posé un gros problème. SQL-92, cependant, introduit une solution facile à utiliser dans le CAST expression.

La CAST expression convertit les données de table ou des variables hôte d'un type à un autre type. Après avoir effectué la conversion, vous pouvez procéder à l'opération ou de l'analyse que vous avez initialement envisagé.

Naturellement, vous faites face à certaines restrictions lors de l'utilisation de la CAST expression. Vous ne pouvez pas simplement convertir indistinctement données de tout type dans un autre type. Les données que vous convertissez doit être compatible avec le nouveau type de données. Vous pouvez, par exemple, utiliser CAST à convertir la CHAR (10) chaîne de caractères '2007-04-26' au DATE taper.

Mais vous ne pouvez pas utiliser CAST à convertir la CHAR (10) chaîne de caractères «rhinocéros au DATE taper. Vous ne pouvez pas convertir un ENTIER au SMALLINT type si le premier est supérieur au maximum d'une taille SMALLINT.

Vous pouvez convertir un élément de tout type de caractère à tout autre type (comme numérique ou de date) fourni la valeur de l'élément a la forme d'un littéral du nouveau type. Inversement, vous pouvez convertir un élément de tout type à l'un des types de caractères, à condition que la valeur de l'élément a la forme d'un littéral du type d'original.

La liste suivante décrit quelques conversions supplémentaires que vous pouvez faire:




  • Tout type numérique pour tout autre type numérique. Si la conversion d'un type moins fractionnée précise, les tours ou tronque le résultat système.

  • Tout type numérique exact à un seul intervalle de composants, tels que INTERVAL DAY ou Deuxième intervalle.

  • Quelconque DATE à un TIMESTAMP. La partie du temps TIMESTAMP remplit avec des zéros.

  • Quelconque TEMPS à un TEMPS avec différents niveaux de précision fractionnaire secondes ou une TIMESTAMP. La partie date de la TIMESTAMP remplit avec la date actuelle.

  • Quelconque TIMESTAMP à un DATE, un TEMPS, ou un TIMESTAMP avec un autre fractionnaires secondes précision.

  • Toute l'année-mois INTERVALLE à un type numérique exact ou d'une autre année-mois INTERVALLE avec différents niveaux de précision d'avant-champ.

  • Tous les temps de la journée INTERVALLE à un type numérique exact ou d'une autre pendant la journée INTERVALLE avec différents niveaux de précision d'avant-champ.

Comment utiliser CAST dans SQL

Supposons que vous travaillez pour une entreprise qui assure le suivi des employés potentiels ainsi que les employés que vous avez effectivement engagés. Vous énumérez les employés potentiels dans une table nommée PROSPECT, et vous les distinguer par leurs numéros de sécurité sociale, ce qui vous arrive à stocker comme un CHAR (9) taper.

Vous énumérez les employés dans une table nommée EMPLOYÉ, et vous les distinguer par leurs numéros de sécurité sociale, qui sont de la ENTIER taper. Vous voulez maintenant pour générer une liste de toutes les personnes qui apparaissent dans les deux tables. Tu peux utiliser CAST pour effectuer la tâche:

SELECT * FROM EMPLOYEEWHERE EMPLOYEE.SSN = CAST (PROSPECT.SSN As Integer) -

Comment utiliser CAST entre SQL et la langue d'accueil

L'utilisation de la clé CAST est de traiter avec les types de données qui sont disponibles dans SQL, mais pas dans la langue de l'hôte que vous utilisez. La liste suivante donne quelques exemples de ces types de données:

  • SQL a DECIMAL et NUMERIC, mais FORTRAN et Pascal ne le font pas.

  • SQL a FLOAT et REAL, mais COBOL norme ne.

  • SQL a DATETIME, dont aucune autre langue a.

Supposons que vous souhaitez utiliser FORTRAN ou Pascal aux tables d'accès avec DECIMAL (5,3) colonnes, et vous ne voulez pas d'inexactitudes résultent de la conversion de ces valeurs à la REAL type de données utilisé par Pascal et FORTRAN. Vous pouvez effectuer cette tâche à l'aide CAST pour déplacer les données vers et à partir des variables hôtes de chaînes de caractères.

Vous récupérez un salaire de 198,37 numérique comme un CHAR (10) valeur de '0.000.198,37'. Ensuite, si vous souhaitez mettre à jour ce salaire à 203,74, vous pouvez placer cette valeur dans un CHAR (10) comme '0.000.203,74'. D'abord, vous utilisez CAST pour changer le SQL DECIMAL (5,3) Type de données de la CHAR (10) tapez pour le salarié dont le numéro ID que vous stockez dans la variable d'accueil : emp_id_var, comme suit:

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

L'application FORTRAN ou Pascal examine la valeur chaîne de caractères résultant en : salary_var, éventuellement définit la chaîne à une nouvelle valeur de «000203,74», et met ensuite à jour la base de données en appelant le code SQL suivant:

UPDATE EMPSET Salaire = CAST (: salary_var AS DECIMAL (5,3)) où EmpID =: emp_id_var -

Traiter avec des valeurs de chaînes de caractères tels que «000198,37» est maladroit en FORTRAN ou Pascal, mais vous pouvez écrire un ensemble de sous-routines de faire les manipulations nécessaires. Vous pouvez ensuite récupérer et mettre à jour les données SQL de toute langue d'accueil, et d'obtenir - et de définir - les valeurs exactes.

L'idée générale est que CAST est le plus utile pour la conversion entre des types d'accueil et la base de données plutôt que pour la conversion à l'intérieur de la base de données.


» » » » Comment utiliser casting conversions de type de données avec SQL