bonjour,
j'ai consulté la faq mysql et sql
et je reste sans reponse.
quel est la syntaxe pour dire where !regexp ?
voici ce que j'ai essayé :
mais ca ne fonctionne pas.Code:
1
2 WHERE masked!REGEXP '($var)'
merci d'avance.
Version imprimable
bonjour,
j'ai consulté la faq mysql et sql
et je reste sans reponse.
quel est la syntaxe pour dire where !regexp ?
voici ce que j'ai essayé :
mais ca ne fonctionne pas.Code:
1
2 WHERE masked!REGEXP '($var)'
merci d'avance.
apres etre aller faire un tour du coté des cours SQL ( le SQL de a-z )
j'ai vu que le signe ! a la syntaxe suivante mais ma bdd ne me retourne aucun enregistrement ?
Code:
1
2
3
4 SELECT*FROM table WHERE nonaffiche NOT REGEXP '^(.*)?($moi)+(.*)?$' ORDER BY date DESC
:?Citation:
Envoyé par Necron
Qu'enteds-tu par ! ???
Et regexp, c'est quoi?
Message d'erreur?Citation:
Envoyé par Necron
Si par ! tu veux dire différent, essaie <>
ben en fait regexp c'est une expression reguliere posix
mais je croyais que regexp faisait parti du SQL
c'est peut-etre propre a la bdd mysql
de toute facon je fait plus avec regexp et maintenat je fais comme ca :
mais toujours zero enregistrement retournés 8O ? ( sans message d'erreur )Code:
1
2
3
4 SELECT*FROM table WHERE nonaffiche NOT LIKE '#$moi#' ORDER BY date DESC
pourtant je crois avoir fait comme dans les cours sql ( le cour sql de A a Z )je vais aller le relire plus en details si êrsonne trouve mon erreur ( vais le lire meme si on trouve mon erreur j'en ai besoin )
pourquoi ne pas poster directement dans le forum du sgbd sur lequel tu travailles :?:
je pensais que ça concernait le SQL en particulier mais je viens de lire ce qu'a dit cerberes 2 topic plus haut http://www.developpez.net/forums/viewtopic.php?t=302929
je savais pas que les sgbd avait chacun un SQL different :oops:
mais tu as raison si j'avais su que REGEXP etait propre a mysql j'aurai posté dans le forum approprié mais avec LIKE me revoila dans le bon forum
mais pour le like c'est bien la bonne syntaxe ?
ce que je veut
:arrow: c'est dire selectionne tous les enregistrement ou le champ nonaffiche avec des caracteres avant ou apres ne contient pas la variable $moi
Salut,
en faisant comme ca :
Sinon les expressions régulières ne sont pas non plus gérées par MySql mais par le langage de programmation que tu utilises (PHP par exemple...)Code:
1
2
3
4 SELECT * FROM table WHERE nonaffiche NOT LIKE '%$moi%' ORDER BY date DESC
je posais simplement la question ne sachant pas ce qu'est REGEXP, je crains que ce ne soit pas standard :)
Pas tout à fait.... REGEX n'est pas implémenté dans SQL. En revanche, dans la norme SQL:1999 le prédicat SIMILAR existe et se base sur le concept d'expressions régulières :
Exemple :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
38
39
40 SIMILAR : un prédicat de comparaison de chaînes de caractères basé sur le modèle des expressions régulières. Syntaxe : <string_value> IS [ NOT ] SIMILAR TO <pattern value> [ ESCAPE <escape value> ] <pattern value> ::= <string value> | <regular expression> <regular expression> ::= <regular term> | <regular expression> <vertical bar> <regular term> <regular term> ::= <regular factor> | <regular term> <regular factor> <regular factor> ::= <regular primary> | <regular primary> * | <regular primary> + <regular primary> ::= <character specifier> | % | <regular character set> | ( <regular expression> ) <character specifier> ::= <non-escaped character> | <escaped character> <regular character set> ::= <underscore> | ( <character enumeration> ... ) | ( ^ <character enumeration> ... ) | ( : <regular charset id> : ) <character enumeration> ::= <character specifier> | <character specifier> - <character specifier> <regular charset id> ::= ALPHA | UPPER | LOWER | DIGIT | ALNUM
Recherche les prénoms ne contenant que des lettres et se terminant par un 'e'Code:
1
2
3 SELECT CLI_ID, CLI_PRENOM FROM T_CLIENT WHERE CLI_PRENOM IS SIMILAR TO'[:ALPHA:]+[e]'
A +
d'accord message reçu merci a tous !
ps : je suis desolé en fait dans les cours SQL de A-Z j'avais pas vu que c'etait ce signe '%' qui voulait dire:
"autant de caracteres et n'importe lequel " ( merci nantais)
mais pour ce que SQL pro a dit je vais faire des test
pour savoir si le IS SIMILAR fonctionne avec ma bdd ( MySql )
en tout cas merci a tous
a+