SQL - select * from X OÙ (si la valeur est numérique, d'autre ...)
J'aurais besoin de faire une DB sélectionner qui se comportent différemment lorsqu'de numéro ou de texte est entré, juste différent condition doit être utilisé. Je pense que cela devrait être fait, mais pas tout à fait sûr de la syntaxe (MSSQL). Merci
J'aurais besoin de:
SELECT *
FROM X
WHERE (IF value passed is numeric = "ID" ELSE "NAME") = Value //ID or Name are columns
Vous devez vous connecter pour publier un commentaire.
Basé sur votre exemple:
...serait le travail, je tiens à souligner que l'approche est pas sargable - cela ne réussissent pas aussi bien qu'il le devrait.
Si vous traitez avec un seul paramètre, à l'aide d'un SI d'AUTRE serait mieux performer:
L'autre alternative (qui devrait être définitivement considéré comme si le fait de composer avec plus d'un des critères de filtre) est d'utiliser le SQL dynamique. Je recommande la lecture de La malédiction et la bénédiction de SQL dynamique avant de regarder ce SQL Server 2005+ exemple:
Je suis en supposant qu'il existe un code quelque part que les constructions de cette requête et l'envoie à la base de données? Pourquoi ne pas avoir que le code de déterminer si la valeur est numérique et de générer la requête appropriée? Il garde la requête propre et a l'avantage d'être compatible avec pratiquement tous les SGBDR sur la planète.
C'est une façon, mais votre question est un petit peu vague
Simple - il suffit de récupérer les valeurs numériques:
Plus complexe:
deux façons:
l'aide ou
ou peut-être à l'aide de l'union