J'ai le champ appelé appelingParty strong> dans ma table CDR, il contient des données telles que ceci: Je souhaite sélectionner le premier numéro de chacun de ces numéros comme p>
5 Réponses :
Si appelingParty code> est de type INT:
SELECT CAST(LEFT(CallingParty, 3) AS INT)
From CDR
Pas besoin de Cast Code> explicitement,
Gauche (123456,3) CODE> fera de toute façon une jette implicite.
Ce n'était pas le casting je voulais dire! Votre édition a cassé votre réponse comme maintenant que vous avez maintenant un en tant que INT code> i Computer sur
Varchar code> comme entrée dans la fonction code> gauche code>. Certaines personnes pourraient préférer la jette explicite de toute façon, mais je le trouve plus lisible / moins bruyant sans.
Utilisez cette requête:
SELECT SUBSTRING(CAST(CallingParty AS VARCHAR(50)), 1, 3) FROM [CDR]
SQL Server a une fonction gauche (), mais cela fonctionne mieux sur les chaînes. (varchar / char en SQL)
gauche est plus lisible et moins déroutant, en particulier lorsque certains systèmes commencent à 0 et certains à 1. Kiss
Si la longueur de données ne change pas, vous pouvez toujours diviser par 10 * les chiffres que vous avez
SELECT FLOOR(267672668788 / 1000000000) =267
Essayez ceci:
SELECT Substring(callingparty, 1, Length(callingparty) - 9) FROM cdr;
Dupliqué possible de SQL: Comment obtenir la gauche 3 chiffres d'un int
Est-ce que cela répond à votre question? SQL: Comment obtenir les 3 numéros de gauche de un int