Précédent   Forum du club des développeurs et IT Pro > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/02/2013, 17h34   #1
Alain15
Futur Membre du Club
 
Inscription : décembre 2005
Messages : 189
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 189
Points : 18
Points : 18
Par défaut Fonction personnalisé. Problème avec l'opérateur LIKE

Bonjour,

je viens de créer une nouvelle fonction qui enlève les accents + autres caractères d'une chaine de caractères :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
   CREATE OR REPLACE FUNCTION IACCENT (STR VARCHAR(4000))
     RETURNS VARCHAR(4000)
     LANGUAGE SQL
     CONTAINS SQL
 	 RETURN UPPER(REPLACE( 
					REPLACE(                
					 REPLACE(              
					  REPLACE(             
					   REPLACE(            
					    REPLACE(           
					     REPLACE(          
					      REPLACE(         
					       REPLACE(        
					        REPLACE(       
					         REPLACE(
					          REPLACE(
					           REPLACE(
					            REPLACE(      
					             REPLACE(
					              REPLACE(STR
					              , ' ' , '' )
					             , '*' , '' )
					            , '_' , '' )
					           , '-' , '' )  
					          , 'é' , 'e' )
					         , 'è' , 'e' ) 
					        , 'ç' , 'c' )  
					       , 'à' , 'a' )   
					      , 'ù' , 'u' )    
					     , 'â' , 'a' )     
					    , 'ê' , 'e' )      
					   , 'î' , 'i' )       
					  , 'ô' , 'o' )        
					 , 'û' , 'u' )
					, 'ö' , 'o' )
				   , 'ï' , 'i' ))
Quand j'utilise la fonction dans le select :

Code :
1
2
 
SELECT IAccent(FIRSTNAME) FROM TABLE
ou quand je l'utilise avec l'opérateur = :

Code :
1
2
 
SELECT * FROM TABLE WHERE COLUMN = IAccent( 'éà')
cela fonctionne sans problème.

Par contre, quand je l'utilise avec l'opérateur LIKE à la place du =, j'obtiens cette erreur :

Code :
1
2
 
The SQL statement failed because of a non-severe system error. Subsequent SQL statements can be processed.  (Reason "Unknown function protocol".). SQLCODE=-901, SQLSTATE=58004, DRIVER=4.11.69
Quelqu'un peut m'aider?

Merci d'avance.
Alain15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 11h40   #2
punkoff
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 2 160
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 2 160
Points : 3 494
Points : 3 494
bonjour,


indiquez la requete que vous executé
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h20.


 
 
 
 
Partenaires

Hébergement Web