8
votes

Comment puis-je obtenir les 3 premiers chiffres en 123456 numéros dans SQL?

J'ai le champ appelé appelingParty dans ma table CDR, il contient des données telles que ceci: xxx

Je souhaite sélectionner le premier numéro de chacun de ces numéros comme xxx


2 commentaires

5 Réponses :


13
votes

Si appelingParty code> est de type INT:

SELECT CAST(LEFT(CallingParty, 3) AS INT)
From CDR


2 commentaires

Pas besoin de Cast explicitement, Gauche (123456,3) 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 i Computer sur Varchar comme entrée dans la fonction gauche . Certaines personnes pourraient préférer la jette explicite de toute façon, mais je le trouve plus lisible / moins bruyant sans.



1
votes

Utilisez cette requête:

SELECT SUBSTRING(CAST(CallingParty AS VARCHAR(50)), 1, 3) FROM [CDR]


0 commentaires

2
votes

SQL Server a une fonction gauche (), mais cela fonctionne mieux sur les chaînes. (varchar / char en SQL) xxx


1 commentaires

gauche est plus lisible et moins déroutant, en particulier lorsque certains systèmes commencent à 0 et certains à 1. Kiss



1
votes

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


0 commentaires

-1
votes

Essayez ceci:

SELECT Substring(callingparty, 1, Length(callingparty) - 9) 
FROM   cdr; 


0 commentaires