Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/03/2011, 07h00   #1
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Par défaut Condition pas assez restrictive ?

Bonjour,

je cherche à conditionner une requête pour ne chercher et trouver que les enregistrements contenant "si("
Ci-après, un aperçu du contenu de la colonne formule de la table formules:
Code :
1
2
3
4
5
formule
si(toto=titi;1,2);
NB.SI(C5:C9;"<>0")-1;
arrondi(si(totos=titi;tata*1.5,tata*2));
rassis=totos-titi;
L'objectif étant de trouver les cas d'emploi de "si" et uniquement si

Code :
SELECT * FROM formules WHERE formule LIKE '%si(%'
me renvoie 3 lignes (1,2,3) alors que je ne voudrais récupérer que les lignes 1 et 3

Dans la même veine, je ne souhaite récupérer que les enregistrements avec le mot "toto" entier pas les totos

La condition dans
Code :
SELECT * FROM formules WHERE formule LIKE '%toto%'
me renvoie trop d'enregistrements.

D'avance, merci pour vos suggestions
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 07h32   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Bonjour,

Je ne connais malheureusement pas assez les formules (EXCEL à priori?)
Si vos si( sont toujours en minuscule et les autres cas (NB.SI par exemple mais peut-être y en a t'il d'autres?) vous pouvez forcer une CASE sensitive lors de votre recherche.

La solution pourrait venir de la mise en place d'une convention de nommage pour vos nom de variables dans les formules (majuscules systématique ou "_" en début et fin afin de pouvoir les retrouver avec le LIKE etc.).
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 07h52   #3
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Vous devez pouvoir passer par des expressions régulières dans votre LIKE:

(voir le billet de blog par Christian Robert intitulé SQL Server : La vérité sur le LIKE)
qui ne remontera pas les 'toto' précédés ou suivi d'une lettre...
A vous d'affiner.

Exemple:
Code :
1
2
3
4
 
SELECT * 
FROM dbo.Formules
WHERE formule LIKE '[^a-z]Toto[^a-z]%'
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 10h27   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
1) SELECT * FROM formules WHERE formule LIKE '%si(%' COLLATE French_CS_AS

Pour le second le miuyex est de faire une fonction UDF pour traiter ce cas car avec une expression régulière c'est TRES TRES TRES lent !

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 * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h06.


 
 
 
 
Partenaires

Hébergement Web