Comment utiliser COMME condition dans SQL avec un champ numérique?
Je suis en utilisant cette requête pour obtenir certaines données spécifiques: "select * from emp où emp_name LIKE '%'";
emp_nam, c'est le caractère de champ, comment puis-je utiliser la même logique condition avec un champ numérique? quelque chose comme:
"select * from emp où emp_id ????
où emp_id est un champ numérique.
Merci,
Que voulez-vous atteindre? Vous êtes à la recherche pour tous les codes qui commencent avec par exemple 7?
Cela dépend de votre SGBD Moteur, buste, la plupart d'entre eux ne le soutien.
Cela dépend de votre SGBD Moteur, buste, la plupart d'entre eux ne le soutien.
OriginalL'auteur | 2009-07-10
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire un générique sur un certain nombre, cependant, si vous en avez vraiment besoin, vous pouvez convertir le nombre en varchar et ensuite effectuer le générique de match.
par exemple.
Cela ne fonctionne pas pour les bases de données Jet, mais une approche similaire sera. Utilisation cstr() à la place de l'convert(varchar... déclaration.
OriginalL'auteur Robin Day
Dans Access, vous pouvez concaténer le champ numérique avec une chaîne vide pour contraindre dans une chaîne de caractères que vous pouvez comparer en utilisant COMME:
Également noter que l'Accès utilise * non % que le caractère générique. Voir: Comme Opérateur (Microsoft Access SQL).
OriginalL'auteur Jason DeFontes
Dans Access moteur de base de données SQL syntaxe, l'utilisation de la
%
caractère générique, SOIT vous devez utiliser ANSI-92 Mode d'interrogation OU de l'utilisation de laALIKE
mot-clé à la place de laLIKE
mot-clé.Pour les détails de la norme ANSI-92 Mode d'interrogation voir À propos de la norme ANSI SQL de la requête en mode (MDB) dans le Access2003 de l'Aide (la même chose s'applique à ACE Access2007, mais ils ont enlevé le thème de la Access2007 de l'Aide pour une certaine raison). Si vous faites ça dans le code, vous aurez besoin d'utiliser OLE DB par exemple, ADO classique en VBA.
Pour la
ALIKE
mot clé... vous ne trouverez pas beaucoup. C'est l'un de ceux officiellement fonctionnalités non documentées, ce qui signifie qu'il est un élément de risque qu'il puisse être supprimé à partir d'une future révision de la base de données Access moteur. Personnellement, je prendrais le risque d'avoir explicitement code ANSI-89 Mode d'interrogation et ANSI-92 le Mode de recherche est nécessaire pour la Validation des Règles et desCHECK
des contraintes (voir exemple ci-dessous). Codant pour les deux peut être fait, mais il est de plus longue haleine et difficile d'obtenir un droit, c'est à dire a plus de risque immédiat, si vous vous trompez.C'est la réponse. Maintenant, pour la "solution"...
Clairement, si vous devez effectuer ce genre de requête sur emp_id puis le domaine est incorrect c'est à dire qu'il ne devrait pas être un champ numérique.
Guérir la maladie: modifier le schéma pour en faire un champ de texte, l'ajout d'un domaine de la règle s'assurer qu'il ne contient que des caractères numériques par exemple
MODIFIER le 'Jet' tag a été ajouté. Le ci-dessus
CHECK
contrainte doit être réécrite en raison de l'Accès de la base de données du moteur a sa propre syntaxe: remplacer le^
caractère avec!
. Aussi, pour rendre cela compatible avec la norme ANSI-89 Mode d'interrogation et ANSI-92 Mode d'interrogation, l'utilisation du même mot clé, c'est à direOriginalL'auteur onedaywhen
Non, vous ne pouvez pas utiliser
LIKE
pour les champs numériques.Essayez d'utiliser
<
,>
ou=
,>=
,<=
😉Si vous souhaitez effectuer une recherche dans un champ numérique pour des choses comme le "début avec 12" ou qqch comme ça, votre design et s'adapte à vos besoins.
OriginalL'auteur tuergeist
'%' wild-card, a fonctionné pour moi sur MS-SQL server. Voir http://technet.microsoft.com/en-us/library/aa933232%28v=sql.80%29.aspx .
La requête
select * from MyTable where ID like '548%'
fonctionne sur MS-SQL Server 2008 R2 et renvoie les résultats à l'aide d'identifiants 5481,5485 etc. Colonne ID estint
type.OriginalL'auteur mukul
Utilisation
cast
ouconvert
fonction de laemp_id
domaine et vous pourrez comparer aveclike
.je ne sais pas sur jet sql mais byu la conversion en chaîne de caractères, vous pouvez le faire
Le 'Jet' tag a été ajouté après quelques réponses (dont le mien) a été publié; il était à l'origine juste marqué 'sql'.
FWIW Jet (maintenant l'Accès au moteur de base de données), en effet, ont jeté des fonctions par exemple CCURRENCY() sera jeté à la MONNAIE.
OriginalL'auteur KuldipMCA
utilisant CONCAT implic convertir entier de la chaîne de
SÉLECTIONNEZ * à PARTIR de la ville OÙ CONCAT(id_city,") LIKE '%119%'
OriginalL'auteur jfraber
Salut, j'ai eu du mal à faire cela avec un flotteur, j'ai eu à lancer deux tims fonte(fonte(EmpId comme bigint) varchar(15)) like '%903%' Espère que quelqu'un trouverez ce utile
OriginalL'auteur JacKjo
Dans FileMaker SQL, vous pouvez lancer n'importe quel champ d'une chaîne de caractères avec la fonction STRVAL:
SELECT * FROM emp WHERE STRVAL(emp_id) LIKE '1%'
Voici un exemple réel de l'utilisation de cette dans FileMaker:
Comment afficher la liste de tous les enregistrements qui contiennent un caractère ASCII 0 dans un champ numérique
SELECT emp_id FROM emp WHERE STRVAL(someNumericField) LIKE '%'+CHR(0)+'%'
OriginalL'auteur MrWatson