begin process at 2012 05 26 14:19:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Functions

 > 

curseur T SQL


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

curseur T SQL

samedi 2 mai 2009 à 23:04:58 | curseur T SQL

bluefred

Salut,
je suis débutant en SQL, je vais compter le nombre de caractère unique sur chaque ligne.
dans une table j'ai une colonne qui est comme:
id colonne
1  AB
2  AABBAC
3  ABCADDFA
.
.
merci bcp
lundi 4 mai 2009 à 12:48:33 | Re : curseur T SQL

aieeeuuuuu

Bonjour

il y a plusieurs facon de faire ca, mais je pense que la solution la plus simple, en passant par une procedure stockée, est de :

1/ créer une table temporaire avec une seule colonne
2/ faire une boucle : inserer chaque lettre une par une dans la table temporaire
3/ faire un count(distinct * ) sur la table temporaire = resultat voulu


lundi 11 mai 2009 à 21:23:13 | Re : curseur T SQL

bluefred

Bonjour, merci bcp pour ta réponse.

Désolé, mais je vois pas comment ça va aboutir au résultat, ce que je veux par exemple (+ précisément, cette fois) est d'éliminer quelque bloque de caractère, les 5 chiffres après les deux 1er caractères alphanumérique, et après, extraire les éléments uniques par ligne.

RegStr
----------------------------------------------------
AA00123-AA00124-AF00525
----------------------------------------------------
AA00823-A900624-TF00525-TF00124-AA00123
----------------------------------------------------
AA00123-AA00724-AF00525-AF12345-AA00978
----------------------------------------------------
AB00123-AB00124-AF00525-AB00987-AF56432
----------------------------------------------------
...
J'ai fais une recherche sur le net et j'ai trouver que Oracle géré très bien cette question a l'aide de Regular Expression (REGEXP_REPLACE) mais je connais pas comment le faire avec MS SQL.
Avec MS SQL (Version 7.0), j'ai créé un curseur ça marche mais ça se bloque quelque part, ma table contient a peu prés 1 million d'observation et peut évoluer d'avantage.

C'est quoi le plus rapide et sure, les curseurs ou la procédure stock
ée
-----------------------------------------------------------
--Create & fill out the table
-----------------------------------------------------------

create table #Test (RegStr varchar(250))
go
insert into #Test (RegStr) values ('AA00123-AA00124-AF00525')
insert into #Test (RegStr) values ('AA00823-A900624-TF00525-TF00124-AA00123')
insert into #Test (RegStr) values ('AA00123-AA00724-AF00525-AF12345-AA00978')
insert into #Test (RegStr) values ('AB00123-AB00124-AF00525-AB00987-AF56432')

alter table #Test
add AllRegStr varchar(250)
go
alter table #Test
add UniqueStr varchar(250)
go

-----------------------------------------------------------
--Get RegStr
-----------------------------------------------------------
Declare @Num int, @String varchar(250), @RegStr varchar(250), @j int
Declare Get_RegStr cursor for
select RegStr from #Test
open Get_RegStr
fetch next from Get_RegStr into @String
set @RegStr = @String
WHILE @@FETCH_STATUS = 0
begin 
  set @Num = (len(replace(@RegStr,'-',''))/7)
  set @j = 0
    WHILE @j < @Num
      begin
       set @RegStr = STUFF(@RegStr, 3+2*@j, 6, '')
       set @j=@j+1
      end           
    update #Test
    set AllRegStr = @RegStr
    where #Test.RegStr = @string
FETCH NEXT FROM Get_RegStr into @String
set @RegStr = @String
end
close Get_RegStr
-----------------------------------------------------------
--Get UniqueStr
-----------------------------------------------------------
Declare @Str varchar(250), @i int, @Count int, @result varchar(250), @RegStr varchar(250)
Declare Get_Unique cursor for
select AllRegStr from #Test
open Get_Unique
fetch next from Get_Unique into @Str
set @RegStr = @Str
WHILE @@FETCH_STATUS = 0
begin
  set @i = 1
  set @count = (len(@RegStr))
    while (@i < @Count)
    begin
    if (@result IS NULL)
      begin
      set @result = ''
      end
   set @result = @result + SUBSTRING(@RegStr,1,2)
   set @RegStr = REPLACE(@RegStr,SUBSTRING(@RegStr,1,2),'')
   set @i = @i + 2
   end
    update #Test
    set UniqueStr = @result
    where #Test.AllRegStr = @Str
FETCH NEXT FROM Get_Unique into @Str
set @RegStr = @Str
set @result = ''
end
close Get_Unique
deallocate Get_Unique



Cette discussion est classée dans : sql, colonne, curseur


Répondre à ce message

Sujets en rapport avec ce message

Sql serveur et Curseur [ par pepe013 ] Bonjour a tous Voila je suis un peu entrain de galéré avec ce curseur sous sql serveur qui me permet de renvoyé tout les attributs d'une table ( nom d Colonne Table SQL 2000 [ par anspauldou ] SalutJe voudrai savoir s'il est possible en MS SQL2000 d'avoir une colonne en lecture seul dans ma table afin d'empêcher quiconque d'effectuer une mod créer table avec plusieur clés etrangérs en sql server 2005 [ par amal2008 ] Bonjour, je veux faire une requete de create table en sql server 2005 , avec tous les contrainres et types des champs,le probléme c'est qu il m'accept probleme de virgule [ par colonelblondass ] Bonjour à vous Forum, J'ai un énorme problème en SQL. J'ai une table avec plus de 21 millions d'enregistrements et en l'important, la colonne avec l Aide SQL [ par rem594 ] Bonjour et merci d'avance pour votre aide, Voici mon problème. Je lie 2 tables par l'intermédiaire d'une requête Sql. Mon objectif est de ramener cer [SQL Server Express 2005] Problème de DeadLock [ par pitipilot ] Bonjour à tous j'ai un sacré problème : j'ai plusieurs PC liés en ODBC avec une base de donnée. Sauf que certaines données ne sont pas envoyées. Quand [BAR]Connexion distante à SQL SERVER 2008 (sur XP Home) [ par HammR ] Bonjour et tout d'abord merci d'avoir posé vos yeux sur cette première ligne, espérons que vous irez plus loin ! Je galère depuis quelques jours main CSV SQL [ par aymen8219 ] bonjour, mon probleme c'est lorsque je fait l'import d'un fichier csv vers mysql j'ai un probleme dans les chiffes négative et les chiffre avec virgu Petite erreur de syntaxe SQL difficilement décelable [ par hgus ] Bonsoir, Je viens vers vous car je n'arrive pas à trouver ce petit bug bien gênant : Sur un forum phpBB 3.0.9, j'ai installé un Mod, une shoutbox Instruction (plsql ou sql) pour changer de connexion [ par colonelblondass ] Bonjour, Est-il possible de changer de connexion sur sql developer avec une commande (sql ou pl sql) ? J'ai 2 connexions possibles. Je dois faire u


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 : 0,718 sec (4)

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