Comme opérateur pour l'entier
J'ai une colonne de type bigint (ProductSerial) dans ma table. J'ai besoin de filtrer la table par le Produit de série de l'aide comme opérateur. Mais j'ai trouvé que, comme opérateur ne peut pas être utilisé pour le type integer.
Est-il une autre méthode pour cela (je ne veux pas utiliser le =
opérateur).
Pourquoi êtes-vous de stocker le numéro de téléphone comme un entier?
"J'ai une colonne de type bigint (numéro de Téléphone)" - ne bien. utiliser une chaîne de caractères
Question mise à jour. Il a été produit en série et non pas un numéro de téléphone. Désolé pour ça.
de sorte que les utilisateurs ne peuvent pas modifier une question, si ils font une erreur?
N'a pas d'importance si c'est un numéro de Téléphone ou numéro de série. Je veux juste savoir, est-il une méthode pour COMME opération sur ENTIER. thnx
"J'ai une colonne de type bigint (numéro de Téléphone)" - ne bien. utiliser une chaîne de caractères
Question mise à jour. Il a été produit en série et non pas un numéro de téléphone. Désolé pour ça.
de sorte que les utilisateurs ne peuvent pas modifier une question, si ils font une erreur?
N'a pas d'importance si c'est un numéro de Téléphone ou numéro de série. Je veux juste savoir, est-il une méthode pour COMME opération sur ENTIER. thnx
OriginalL'auteur Raging Bull | 2013-08-27
Vous devez vous connecter pour publier un commentaire.
Si vous devez utiliser
LIKE
, vous pouvez lancer votre numéro dechar
/varchar
, et d'effectuer leLIKE
sur le résultat. C'est tout à fait inefficace, mais depuisLIKE
a un fort potentiel de tuer des indices de toute façon, il peut travailler dans votre scénario:Si vous cherchez à utiliser
LIKE
pour correspondre au début ou à la fin du numéro, vous pouvez utiliser la division entière et le module opérateurs pour extraire les chiffres. Par exemple, si vous voulez que tous les neuf chiffres de départ dans407
, recherche pourTrès souvent, les gens n'ont pas de contrôle sur leur schéma. On ne doit pas supposer qu'ils peuvent changer la structure de leur table sans consulter leurs Administrateurs de bases de données, architectes,...).
Combien de fois avez-vous penser à quelqu'un d'écrire une requête peut complètement re-facteur de la DB? Je travaille avec des Requêtes SQL toute la journée, si j'ai changé tout type de données de plusieurs applications serait FUBAR et je voudrais être licenciés.
Si un vendeur a l'aide d'objets numériques pour stocker des numéros de téléphone, je serais re-évaluation de mon choix de fournisseur; c'est une indication d'ignorer les pratiques exemplaires, et qui sait quoi d'autre qu'ils font de mal, si ils ne peuvent pas obtenir quelque chose de simple à droite.
nous ne sommes pas affaire à un numéro de téléphone maintenant.
OriginalL'auteur dasblinkenlight
Bien que je suis un peu en retard à la fête, je voudrais ajouter la méthode que j'utilise pour le match des N premiers nombres donnés (dans l'exemple, 123) dans tout numérique-type de colonne:
La technique est similaire à @dasblinkenlight, mais il fonctionne quel que soit le nombre de chiffres de la colonne cible valeurs. C'est une solution viable si votre colonne contenant des nombres avec des longueurs différentes et vous ne souhaitez pas utiliser le CAST+COMME méthode (ou une colonne calculée).
Pour plus de détails sur ce (et d'autres COMME les solutions de contournement) découvrez ce blog que j'ai écrit sur ce sujet.
OriginalL'auteur Darkseal
Vous pouvez modifier votre Champ PhoneNumbers et de les stocker en tant que Chaîne et ensuite utiliser le souhaitez Vous pouvez modifier votre tableau, de sorte que vous pouvez utiliser l'instruction LIKE, si vous voulez toujours utiliser le type de données BIGint pour vos numéros de téléphone, vous ne pouvez pas trouver le Numéro de Téléphone sans l'aide de = la méthode que vous pouvez utiliser est Entre méthode qui ressemble pour les Nombres qui sont à l'intérieur de la gamme.
Pour les édité question: je pense que vous devriez utiliser le signe = pour leurs pièces d'identité, ou de convertir l'Int en String et ensuite Utiliser Comme.
bigint
.déjà changé le paragraphe, de sorte que c'est le thème aimé im faire une Suggestion et non une Hypothèse, merci
"J'ai travaillé avec beaucoup de systèmes téléphoniques et beaucoup d'entre eux stocker des numéros de téléphone de type bigint" de NE PAS ACHETER de TELS systèmes. Écrit par des idiots!
Vous êtes à la droite hahaha!!!
OriginalL'auteur Albert Laure
La question d'origine liées à un numéro de téléphone. L'OP a depuis modifié pour faire référence à des numéros de série. Cette réponse fait référence à la question d'origine seulement.
Ma suggestion est d'éviter de stocker vos numéros de téléphone que des entiers, en premier lieu, et donc le problème ne se produit pas. Mon numéro de téléphone est dans la forme, à l'international, des:
Stocker un nombre entier n'a pas de sens ici, car vous n'aurez plus jamais besoin de faire une opération mathématique sur elle, et vous perdriez le + en tête. Dans le royaume-UNI, c'est:
et donc de les stocker comme un entier, perd son premier zéro. Sauf si vous avez un très très exigence spécifique pour stocker un nombre entier, vous ne seriez nettement mieux stocker une chaîne au lieu.
[Note: Pas réellement mon numéro de téléphone]
La clarification est parce que la question de l'modifications de la faire ressembler à je suis à répondre à une question à l'un d'eux a demandé.
OriginalL'auteur Adrian Wragg
Si vous avez le contrôle sur la base de données vous pouvez ajouter une colonne calculée pour copier la valeur de l'entier en une chaîne:
Et requête comme:
Cela vous permettra de déplacer le calcul de l'insérer/mettre à jour et uniquement sur les lignes insérées ou mises à jour, plutôt que de la conversion de chaque ligne pour chaque requête.
Cela peut être un problème si il y a beaucoup de mise à jour de colonnes comme il va ajouter une très faible charge de ces.
Il y a peut être un moyen de le faire mathématiquement en utilisant le module, mais ce serait prendre beaucoup de travail et de tests.
OriginalL'auteur bendataclear