Rechercher : dans
Par :

[SQL] % ne fonctionne pas !?

Dernière réponse le 31 mai 2007 à 17:06:05 Riwalenn, le 6 sep 2005 à 11:39:03 
 Signaler ce message aux modérateurs

Bonjour,

dans ma table, j'ai fait la requête suivante :

SELECT*
FROM Products
WHERE ProductName IN ('%NV')

j'obtiens juste une ligne vide. Hors si je fais :
SELECT*
FROM Products
WHERE MainGrade IN ('NV')

J'obtiens tout mes produits référencés en NV dans la colonne MainGrade.

Hors moi ce que j'aimerais obtenir c'est les produits dont le nom se termine par NV ou -NV dans la colonne ProductName.
Pourquoi est-ce que mon %NV est refusé ?

merci pour votre aide

Configuration: SQL server standard edition version 8.00.194 (RTM) sous windows 2000 (server)

Meilleures réponses pour « [SQL] % ne fonctionne pas !? » dans :
Le langage SQL Voir Qu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table Voir Le SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Commande SELECT Voir Le langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
Gestion des paramètres SQL VoirSQL présente un certain nombre de paramètres au niveau d'Oracle qu'il est possible de visualiser à travers la commande : SHOW ALL Pour modifier la valeur d'un paramètre il suffit d'utiliser la commande : SET NOM_PARAM VALEUR
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...
SQL - Jointures VoirExpression des jointures Une jointure (ou θ-jointure) est un produit cartésien de deux tables. On appelle équijointure une θ-jointure dont la qualification est une égalité entre deux colonnes. En SQL, l'expression d'une jointure se...

1

deus, le 6 sep 2005 à 12:15:32

Salut
essaie
SELECT*
FROM Products
WHERE MainGrade LIKE '%NV'
What Jesus can't fix tonight,
The Whisky certainly might.

Répondre à deus

2

Riwalenn, le 6 sep 2005 à 14:23:57

Bien joué Deus ! Merci pour la solution, j'avais pas pensé à LIKE et surtout à ne pas mettre de parenthèse après LIKE... merci encore !

Répondre à Riwalenn

3

Riwalenn, le 6 sep 2005 à 17:12:44

/par contre j'ai une autre question, ça ne fonctionne pas dans le cadre d'une colonne de date. J'ai une colonne qui s'appelle ModifyDate notée : 06/09/2005 16:41: par exemple

comment puis-je faire par exemple pour selectionner tous les champs dont la date correspond à aujourd'hui ?
j'ai essayé avec
SELECT *
FROM nom de la table
WHERE ModifyDate LIKE '06/09/2005%'

ou encore
WHERE ModifyDate IN '06/09/2005%'

ou encore avec les parenthèses avant et après les '

Est-ce que c'est une requête différente pour les dates ?

Répondre à Riwalenn

4

deus, le 6 sep 2005 à 17:33:41

Re,
Voici une solution envisageable. Pour l’exemple j’ai utilisé la DB Northwind
USE Northwind
SELECT * FROm Orders
WHERE Datediff(dd, OrderDate, '07/08/1996') = 0

Mais tu peux aussi regarder la fonction DATEPART,…
What Jesus can't fix tonight,
The Whisky certainly might.

Répondre à deus

5

Riwalenn, le 7 sep 2005 à 10:55:03

Oulà ! J'avoue que là tu parles un language que je ne comprends plus... je suis une newbie en SQL moi :)

Ma table s'appelle DeliveryDtls.
la colonne que j'aimerais avoir dans le WHERE c'est ModifyDate et la date 06/09/2005 par exemple. Par contre dans ma colonne ModifyDate, cela se présente sous la forme 06/09/2005:14:15: par exemple et moi j'aimerais sélectionner toute la journée.

J'ai réussi à m'en tirer grâce à une autre colonne mais dans un futur très proche je vais me retrouver vite dans la mouise ;) et donc il faudrait vraiment que je comprenne comment on fait...

ps. j'ai acheté un bouquin que je devrais reçevoir incessament sous peu : celui qui est présenté dans le menu de gauche...

Répondre à Riwalenn

6

random, le 7 sep 2005 à 11:17:40

Format(modifydate;"jjmmaaaa")=format(date;"jjmmaaaa")
ou ent(modifydate)=date
ou modifydate>=date and modifydate<date+1
j'en connais d'autres plus longues elle est pas belle, la vie ?

Répondre à random

7

Riwalenn, le 7 sep 2005 à 11:38:30

modifydate>=date : pas de tri
modifydate>=date and modifydate<date+1 : ligne vierge
ent(modifydate)=date : erreur suivante

[MICROSOFT][ODBC SQL Server Driver][SQL Server] 'modifydate' is not a recognized OPTIMIZER LOCK HINTS option


il va de soi que j'ai bien mis les majuscules là où il y en avait.

Répondre à Riwalenn

8

deus, le 7 sep 2005 à 13:35:25

Alors dans ton cas précis essaies ça :

SELECT * FROm DeliveryDtls
WHERE Datediff(dd, ModifyDate, '06/09/2005’) = 0

(Attention en fonction de ta configuration il se peut qu’il interprète ‘06/09/2005’ comme le 9 juin donc à toi de jouer avec ça ;)

What Jesus can't fix tonight,
The Whisky certainly might.

Répondre à deus

10

kiwijinshi, le 27 mar 2007 à 10:44:35

Bonjour ! T'as l'air de maîtriser la fonction LIKE alors une petite question pour toi, cadeau ^^

Je fais des requêtes en SQL sous ACCESS. Mon problème est à peu près le même qu'au dessus : j'ai deux tables A et B qui contiennent des objets dont l'arborescence est définie selon leur code ARBO.
A contient les matériels
B contient les pièces qui constituent les matériels

Je veux afficher les éléments de A qui ont des pièces dans B
exemple : dans A un matériel a un ARBO = 10
dans B toutes les pièces qui commencent par '10' constituent ce matériel (= 100 / 101 / 1000 / 100025 / etc...)

J'ai donc voulu faire une jointure de table du type
SELECT matériel, A.ARBO FROM A, B
WHERE B.ARBO LIKE 'A.ARBO%'

Erreur au niveau de la clause 'A.ARBO%'... j'ai essayé de remplacer "%" par "*", de placer des parenthèses ou des crochets... j'ai pas dû tout tester !?

Merci de me prévenir si tu as une petite idée ;)

Répondre à kiwijinshi

11

Riwalenn, le 27 mar 2007 à 11:19:47

T'aurais pas oublié un A.arbo=B.arbo ? enfin dans ce style.... il faut démontrer dans ta requete que arbo (par exemple) existe dans la table A et dans la table B... non ?! Sinon comment pourrait-il faire le lien entre la table A et la B ? Cordialement,
Riwalenn

Répondre à Riwalenn

12

kiwijinshi, le 27 mar 2007 à 11:36:15

C'est là tout le pb en fait :
Table A :
ARBO / Libellé matériel
10 Chaise
20 Canape
30 Voiture
311 Scooter

Table B :
ARBO / Libellé piece
102 Vis
103 Planche
200 Coussin
2001 Plume
300 Roue
3001 Jante
3002 Pneu
3110 Guidon

Voilà l'idée... lier ces tables en fonction des champs d'ARBO, c'est le seul moyen que j'ai trouvé (les tables sont ici simplifiées pour la compréhension).
Le soucis c'est que les ARBO ne sont pas identiques MAIS un code ARBO de B contient forcément dans ses premiers chiffres un code ARBO complet de A

J'espère que c'est assez clair.. ? Le principal soucis se situe bien au niveau de la jointure

Répondre à kiwijinshi

13

Riwalenn, le 27 mar 2007 à 11:51:36

Je pense avoir compris... en gros c'est un truc comme ça que tu veux :

select materiel.tableA,arbo.tableA,
from tableA, tableB
where arbo.tableA like arbo.tableB and arbo.tableA like '3%'
order by arbo.tableA

le seul hic serait en fait de definir le 30% ou un autre chiffre bien entendu...
seulement y'a juste un problème dans notre exemple tu as 2 références commençant par 30 -> voiture et scooter... mais je ne pense pas que le soucis vienne de là... Cordialement,
Riwalenn

Répondre à Riwalenn

14

kiwijinshi, le 27 mar 2007 à 13:17:14

La synthaxe exacte est TABLE.CHAMP ;)
Et je pense qu'il sera plus simple de faire les conditions de jointures en VBA que directement sous SQL... tant que je n'ai pas de champ rigoureusement commun entre les deux tables (avec longueur de ARBO variable qui plus est) il n'y a pas de solution adaptée..

Pour scooter j'ai corrigé, c'était une erreur de mettre 301, j'ai remplacé par 311 pour l'exemple.

Merci pour ton aide en tt cas ! Joyeuse semaine

Répondre à kiwijinshi

15

Riwalenn, le 27 mar 2007 à 13:51:16

Lol je fais toujours l'erreur de syntaxe entre les champs même avec toutes mes requêtes...
désolée de n'avoir pu t'aider mais en même temps je ne connais pas du tout access, ça fait 10 que je l'ai pas utilisé... Cordialement,
Riwalenn

Répondre à Riwalenn

9

Riwalenn, le 7 sep 2005 à 14:16:09

Grandiose Deus ! l'histoire du mois de juin m'a fait tilt et en effet tu as raison. c'est vraiment très bizarre tu dois faire une recherche style 09/07 pour obtenir la date 07/09 quoi que j'ai oublié que j'ai la version anglaise de windows 2000 donc forcement ça coulait de source...

Merci Deus encore pour ton aide ! Ca m'enlève une épine du pied Cordialement,
Riwalenn

Répondre à Riwalenn

16

 Kisse, le 31 mai 2007 à 17:06:05

Franchement je comprend absolument rien a SQL
est-ce que l'on peut m'espliquer svp

Répondre à Kisse