|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : octobre 2008 Messages : 99 ![]() |
Bonjour à tous,
J'ai une variable @s de type varchar. Par une requête SQL, je souhaiterais savoir si elle contient au moins 3 parties non vides (de caractères alpha, chiffres, symboles...) séparés par 2 underscores : a_b_c Je suis arrivé à vérifier la présence de 2 underscores et au moins 5 caractères au total : Code :
len(@s) >= 5 AND len(@s) - len(REPLACE(@s, '_', '')) >= 2 Idem pour ce code : Je souhaiterais ne pas avoir recours aux SQL CLR (regex), ni à une usine à gaz (gros curseur...). Et lister tous les caractères possibles et imaginables dans les parties non vides ne me parait pas exploitable. Merci bcp d'avance |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
dans un like : % signifie 0 à n caractere(s) _ signifie 1 et 1 seul caractère à partir de la : _% signifie 1 caractère ou plus, mais au moins 1 __% signifie 2 caracteres ou plus... donc ton problème doit se résoudre de la façon suivante (pas testée): |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
NON !!! pas bon...
Vous pouvez remplacer le caractère d'échappement par un caractère autre, y compris non imprimable. Ceci est du pur SQL normatif. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#4 | |
|
Membre habitué
![]() Inscription : janvier 2008 Messages : 212 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : octobre 2008 Messages : 99 ![]() |
La grande classe, merci
![]() Mais je ne comprends pas en quoi la solution de aieeeuuuuu n'est pas bonne, même après tests... merci de m'éclairer |
|
|
00
|
|
|
#6 |
![]() ![]() |
Elle est correcte pour SQL-Server mais n'est pas normative.
C'est comme utiliser isnull au lieu de coalesce.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : octobre 2008 Messages : 99 ![]() |
Oki, merci bien !
Par contre, je m'aperçois que vos propositions n'écartent pas ce genre de cas : a_b_c_d_e_f_g En fait, je voudrais avoir une chaîne avec exactement 2 underscores, soit a_b_c. Je sais que je peux rajouter à votre proposition un comptage du nombre d'underscores, comme ceci : Code :
LIKE '_%?__%?__%' ESCAPE '?' AND (len(@s) - len(REPLACE(@s, '_', '')) = 2) Merci pour la belle solution |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Il me semble qu'au moment ou j'ai posté il manquait certains underscore dans la solution de aieu....
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#9 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Code sql :
Citation:
|
||||
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : octobre 2008 Messages : 99 ![]() |
Pas bête
Je me demandais juste si l'on ne pouvait pas interdire un ensemble de caractères pour tous les caractères "d'après", et pas juste le caractère suivant. En tt cas, le sujet est résolu, merci à tous ! LIKE '[Y][O][U]%' |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com