begin process at 2012 05 26 13:54:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Sybase

 > 

Functions

 > 

Convertir


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Convertir

vendredi 21 janvier 2011 à 08:43:01 | Convertir

fdouieb

Bonjour,

J'ai une variable varchar qui contient une série d'opération numérique élémentaire du style:

@data = "8737.0*13.42/3.49"

ma question:
Est ce qu'il existe une fonction SQL qui me permet de récupérer dans une variable float la valeur de la variable @data

dans le cas présent: @resultat = 33596.14

Merci
vendredi 21 janvier 2011 à 22:10:30 | Re : Convertir

Robert33

Membre Club

Bonsoir

Un simple select 8737.0*13.42/3.49 devrait suffir.

Bob.
samedi 22 janvier 2011 à 17:39:20 | Re : Convertir

fdouieb

Bonsoir Robert33

Tu as raison mais mon problème est légèrement diffèrent

J’ai une variable varchar qui se nomme @data qui contient l'expression suivante @data = "8737.0*13.42/3.49"

et mon but est de mettre le résultat dans la variable @resultat qui est du type float

ici @resultat doit être égale ici à 33596.14


samedi 22 janvier 2011 à 19:14:50 | Re : Convertir

Robert33

Membre Club

Bonsoir
Ha oui je vois mieux le probleme.

Je pense que tu vas être obligé de passer par une table temporaire.
et utiliser un ordre EXEC pour interpreter la chaine

Code sql :
declare @a varchar (50)
set @a= '8737.0*13.42/3.49'

declare @b float(20)

CREATE TABLE #t1 (a float)
exec ('INSERT INTO #t1 VALUES (cast ('+@a+' as float))')
set @b = (select a from #t1)
drop table #t1

print @b


Bob.
C# is amazing, enjoy it!
samedi 22 janvier 2011 à 20:27:04 | Re : Convertir

fdouieb

Ne fonctionne pas

voici l'erreur: Erreur de conversion du type de données varchar en float

et c'est l'erreur que j'ai depuis le début. Je ne trouve pas de solution

samedi 22 janvier 2011 à 20:30:25 | Re : Convertir

fdouieb

Excuse moi Robert33

cela fonctionne



jeudi 3 février 2011 à 18:09:48 | Re : Convertir

fdouieb

bonjour Robert33

J'ai de nouveau quelques pb sur le code que tu m'as envoyer

voici le code:
declare @a varchar (50)
set @a= '8737.0*13.42/3.49'

declare @b float(20)

CREATE TABLE #t1 (a float)
exec ('INSERT INTO #t1 VALUES (cast ('+@a+' as float))')
set @b = (select a from #t1)
drop table #t1

print @b
cela fonctionne bien

-----------------------------------------------
1er problème
si je déclare cela
set @a= '6*100/7'

la réponse est 85 au lieu de 85.71. Pourquoi ?????
il semble faire une convertion vers un int alors que la variable est float
je ne comprend pas
-----------------------------------------------


-----------------------------------------------
2ieme problème
si je déclare cela
set @a= '63000000*100'
j'ai une erreur débordement arithmétique
alors
que
set @a= '6300000000*100'
passe sans problème alors que le résultat est encore plus gros?????????








vendredi 4 février 2011 à 10:54:59 | Re : Convertir

fdouieb

pour que cela fonctionne il faut faire comme cela

set @a = 'convert(float, 63000000) * 100'

samedi 5 février 2011 à 18:36:24 | Re : Convertir

Robert33

Membre Club

Bonjour fdouied

en effet le moteur a tendance à interpreter les numerics comme des entiers.
Tu peux aussi le forcer à l'interpretation en float ex
set @a= '6*100.0/7'
set @a= '63000000.0*100'

ou le faire de maniere générique dans l'EXEC, en multipliant le résultat par 1.0
Code sql :
exec ('INSERT INTO #t1 VALUES (cast (1.0*'+@a+' as float))') 


Bob.
samedi 5 février 2011 à 22:59:20 | Re : Convertir

fdouieb

Bonsoir Robert33

Je te remercie de prendre du temps pour me répondre.

J'ai un service à te demander. J'ai posté deux autres questions qui ne sont en réalité qu'un seul et même problème. Il se nomme "Erreur" ou "try-catch". Est-ce que tu peux prendre encore un peu de ton temps pour me dire comment éviter le problème

Merci d'avance


Cette discussion est classée dans : variable, data, convertir


Répondre à ce message

Sujets en rapport avec ce message

Renseigner un champs d'une table par une variable [ par Rouk ] Bonjour, Je n'arrive pas a renseigner un champs d'une table par une variable. Exemple : Base1.Table1.Champ = MavariableJ'ai essaye avec un set, mais s convertir string en money [ par chris81 ] comment puis je faire pour convertir un string pour l'inserer dans mon champ de type moneymercihttp://www.correzeweb.comhttp://www.localetv.com section data [ par luccs ] salut a tous :) je me demandais si la creation d une section data pour mettre des base de donnée avec des demandes courantes genre pays, regions, nom PL/SQL - Vider/Initialiser une variable type table [ par Duff01 ] DECLARE TablePatients GestionPatients.LesPatients; <span style="font-weight: b une requete qui me casse la tête [ par chmouette ] Salut les gens!Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :+-------------------------+ !            MaTable  &nbs Probleme de DATE sous SQL server [ par youyou08 ] J'ai un probleme avec la création d'une variable Date sous SQL server J'ai taper le code suivant pour créer ma variable DECLARE @date DATETIME SET @d requete sql [ par benjah ] Bonjour a tous,J'ai un problème pour pondre une requete sql. Voici mon probleme:J'ai deux tables : t1 et t2pour une donnée t1 est associée [0,n] donné Declaration d'une variable [ par Fildomen ] Slteuh, comment declare-t-on une variable bigint en sql 2005 ?? (et l'affecter aussi)MerciYaoYao !!1 + 1 = 10 Temps de connexion à la BD: trop long!!! [ par la_vigiere ] Salut à tous, J'ai fait un programme JAVA qui attend des données sur un port bien particulier. Quand il reçoit des données il se connecte à une base Problème de select sur deux table dont une une avec group by [ par vincentstryckmans ] Bonjour, J'ai deux tables : 1. log_data_infra qui enregistre ce que l'utilisateur user_incimii a fait comme opération mode_ce</font


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales