10
votes

Comment utiliser une condition similaire dans SQL avec un champ numérique?

J'utilise cette requête pour obtenir des données spécifiques: "Sélectionnez * de EMP où Emp_Name comme 'S%'";

EMP_NAM est champ de caractère, comment puis-je utiliser la même condition logique avec le champ numérique? quelque chose comme:

"Sélectionnez * de EMP où Emp_ID ????

où EMP_ID est le champ numérique.

merci,


2 commentaires

Que veux-tu accomplir? Cherchez-vous tous les identifiants qui commencent par E.G. 7?


Cela dépend de votre moteur DBMS, ce qui fait que la plupart d'entre eux soutiennent cela.


10 Réponses :


1
votes

Utiliser couler ou Convert Fonction sur le champ EMP_ID et vous pouvez comparer avec comme


4 commentaires

Cast and Convert sont pris en charge dans les versions de Jet SQL?


Je ne sais pas sur Jet SQL mais BYU convertit dans la chaîne que vous pouvez faire cela


L'étiquette 'Jet' a été ajoutée après que certaines réponses (y compris la mine) ont été publiées; C'était à l'origine juste tagué 'SQL'.


FWIW JET (MAINTENANT Le moteur de base de données d'accès) a effectivement des fonctions de distribution par ex. CCurrency () sera lancé à la monnaie.



4
votes

Non, vous ne pouvez pas utiliser comme pour les champs numériques. Essayez d'utiliser << / code>, > ou = , > = , <= ;)

Si vous souhaitez rechercher dans un champ numérique pour des choses telles que "commençant par 12" ou si vous aimez, votre conception ne correspond pas à vos besoins.


0 commentaires

9
votes

Vous ne pouvez pas faire de caractères génériques sur un numéro, cependant, si vous avez vraiment besoin de, vous pouvez convertir le nombre en un Varchar, puis effectuer la correspondance générique.

EG. P>

SELECT * FROM emp WHERE CONVERT(varchar(20), emp_id) LIKE '1%'


2 commentaires

J'utilise MS Jet, où convertir Varchar n'est pas défini?


Cela ne fonctionnera pas pour les bases de données à jet, mais une approche similaire sera. Utilisez CSTR () au lieu de la convertie (varchar ... relevé.



3
votes

Dans Access Base de base de données Syntaxe SQL, pour utiliser le caractère WildCard code> Vous devez utiliser le mode de requête ANSI-92 ou utiliser le mot clé code> code> à la place du comme code> mot-clé.

Pour plus de détails sur le mode de requête ANSI-92, voir À propos du mode de requête ANSI SQL (MDB) Dans l'aide Access2003 (la même chose s'appliquera à ACE dans Access2007, mais ils ont supprimé le sujet de l'aide Access2007 pour une raison quelconque). Si vous le faites dans le code, vous devrez utiliser OLE DB E.G. ADO Classic en VBA. P>

pour le Alike code> mot-clé ... Vous ne trouverez pas grand chose. C'est l'une de ces fonctionnalités officiellement sans papiers, ce qui signifie qu'il existe un élément de risque qu'il peut être supprimé d'une nouvelle révision au moteur de base de données d'accès. Personnellement, je prendrais ce risque d'avoir à coder explicitement pour le mode de requête ANSI-89 et le mode de requête ANSI-92, comme il est nécessaire pour les règles de validation et Vérifiez les contraintes code> (voir exemple ci-dessous). Le codage pour les deux peut être fait, mais il est plus long ou plus délicat pour obtenir la droite, c'est-à-dire un risque plus immédiat si vous vous trompez. P>

C'est la réponse. Maintenant, pour la "solution" ... p>

Clairement, si vous devez effectuer ce type de requête sur EMP_ID, le domaine est faux, c'est-à-dire que cela ne devrait pas être un champ numérique. P>

Guérir la maladie: modifiez le schéma pour en faire un champ de texte, ajout d'une règle de domaine garantissant uniquement des caractères numériques, par exemple P>

CHECK (emp_id NOT ALIKE '%[!0-9]%')


0 commentaires

8
votes

Dans l'accès Vous pouvez concaténer le champ numérique avec une chaîne vide pour le contraire à une chaîne dans une chaîne que vous pouvez comparer à l'aide de: xxx

Notez également que l'accès utilise * non% comme wildcard personnage. Voir: comme opérateur (Microsoft Access SQL) . < / p>


1 commentaires

Accédez uniquement à des utilisations * en tant que nature générique dans le code SQL lorsque dans le mode de requête ANSI-89. Voir ma réponse.



3
votes

Carte sauvage '%' a fonctionné pour moi sur MS -SQL Server. Voir http://technet.microsoft.com/ EN-US / Bibliothèque / AA933232% 28V = SQL.80% 29.aspx .

La requête Sélectionnez * à partir de MyTable où ID comme «548% ' fonctionne sur MS-SQL Server 2008 R2 et renvoie les résultats avec IDS 5481 5485, etc. Colonne ID est Int Type. < / p>


0 commentaires

0
votes

Bonjour, j'ai eu du mal à le faire avec un flotteur que je devais lancer deux tims moulés (moulage (Empid comme Bigint) que Varchar (15)) comme '% 903%' J'espère que quelqu'un trouvera cette utile


0 commentaires

0
votes

Dans FileMaker SQL, vous pouvez lancer n'importe quel champ à une chaîne avec la fonction STRVAL:

Sélectionnez * à partir d'EMP où STRVAL (EMP_ID) comme "1%"

Voici un véritable exemple de l'utilisation de cela dans FileMaker:

Comment répertorier tous les enregistrements contenant un ASCII 0 dans un champ numérique

Sélectionnez EMP_ID à partir d'EMP où Strval (SomenumériquefieldField) comme '%' + Chr (0) + '%'


0 commentaires

1
votes

Utilisation de Concat Implic Convertir Entreger en chaîne

Sélectionnez * de la ville où Concat (ID_City, '') comme '% 119%'


0 commentaires

0
votes

Écrivez une expression numérique à l'intérieur de la clause WHERE. Ex: Pour sélectionner Numérique Col1 terminer avec 2 derniers chiffres comme 20, Où colonne1- (colonne1 / 100) = 20 (Diviser par 100 est la division entière). Pour sélectionner lorsque Col1 devrait commencer avec 50, Où (col1> = 500 et col1 <= 509) ou (col1> = 5000 et col1 <= 5099)
Ou (col1> = 50000 et col1 <= 50999) etc. (selon la colonne numérique largeur). Alternativement: le sol (log10 (ABS (COL1))) + 1 Renvoie le nombre de chiffres dans un numéro. Donc, le ci-dessous pourrait être la clause requise.
Où col1> 0 et col1 / ((plancher (log10 (ABS (X))) + 1 - 2) * 100) = 50 (Le -2 est d'obtenir les 2 premiers chiffres de Col1).


0 commentaires