|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
Bonjour,
Je voudrais créer une fonction qui va être utilisée dans les requêtes. Par exemple : select col1, col2 from table1 where ma_fonction(col3) = ... Vu dans la doc de Sybase http://infocenter.sybase.com/help/in...s/blocks73.htm, il me semble qu'on ne peut pas créer de fonction mais que des procédures. Mais comment utiliser les procédures dans les requêtes sql? J'ai essayé SELECT ma_procedure(col)... mais ça ne marche pas Si quelqu'un a déjà résolu le même type de problème, je suis preneur. Merci |
|
|
00
|
|
|
#2 | |
|
Membre à l'essai
![]() |
Citation:
|
|
|
|
00
|
|
|
#3 | ||
![]() ![]() |
Premièrement, quelle version d'ASE?
Si il s'agit de 15.0.2 ou plus récent, alors on peut écrire de vrai fonctions en T-SQL - par example: Code :
Autrement - ce sont des procs stockées, qui ne sont pas appelables en ligne dans un SELECT. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
ASE 12.5.3
Je vais donc "inliner" toute la logic de ma fonction dans les requêtes SQL. Car c'est encore possible. Tant pis pour la "readabilité". En fait, ce que je voudrais faire est la recherche sans prise en compte des caractères non accentués. Ma solution sera une grande chaine de str_replace(). Si quelqu'un a une meilleure solution, je suis toujours preneur |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : août 2007 Messages : 134 ![]() |
Tu peux utiliser la fonction T-SQL upper() ou changer le character set de ton serveur (je te déconseille la dernière solution, trop risquée..).
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
Roller,
upper() ne marche pas. Il y a des caractères accentués en majuscule. La deuxième solution n'est pas envisageable car j'ai pas la main sur le serveur. Et comme tu dis, c'est risqué. |
|
|
00
|
|
|
#7 | |
|
Membre actif
![]() Inscription : août 2007 Messages : 134 ![]() |
My bad, j'avais mal lu, je croyais que tu voulais que tu voulais ignorer la casse.
Pour les accents, tu peux utiliser la fonction compare: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc36271_36272_36273_36274_1250/html/refman/X14054.htm Exemple: Citation:
|
|
|
|
00
|
|
|
#8 |
![]() ![]() |
On apprend de nouvelles choses tous les jours... je n'étais pas du tout au courant de cette fonction!
Merci, Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : août 2007 Messages : 134 ![]() |
Et pour poursuivre sur ma lancée, on peut aussi trier selon un charset différent avec la fonction sortkey:
http://infocenter.sybase.com/help/in...man/X14054.htm Enfin je préfère quand même le collate de Ms SQL Server... |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
Roller,
T'es un AS Merci beaucoup! |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
J'aurais encore besoin de votre aide car j'arrive pas encore à résoudre complètement le problème de recherche sans accent
Suite à la suggestion de Roller, j'utilise la fonction sortkey pour implémenter cette fonctionnalité. E.g : select * from table where SORTKEY(col, 54) like '%' + SORTKEY(valeur_recherche, 54) + '%' Ca ne marche que si valeur_recherche ne contient pas ni d'espaces, ni de symboles ou de caractères de ponctuation. J'ai essayé toutes les options de la table de collation mais sans succès Je me demande si quelqu'un connait une autre fonction magique de Sybase Merci |
|
|
00
|
|
|
#12 | ||
![]() ![]() |
Essaye ceci:
Code :
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#13 | ||||||
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
mpeppler,
Ca permet tjs pas de résoudre mon problème. Ex. Code :
Ex. Code :
Code :
Une autre idée? Merci pour ton aide |
||||||
|
|
00
|
|
|
#14 |
|
Membre actif
![]() Inscription : août 2007 Messages : 134 ![]() |
C'est normal, sortkey est fait pour être utilisé lors d'un tri, et ignore donc les caractères non pris en compte dans un tri.
Je pense que ce que tu cherches à faire est impossible avec ton charset sans une procédure/du code T-SQL qui te permette d'enlever les accents (ou une modification du programme qui utilise ce code pour qu'il enlève lui-même les accents). |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : octobre 2002 Messages : 108 ![]() |
merci pour votre aide
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com