Comment puis-je utiliser les fonctions GAUCHE et DROITE dans SQL pour get les 3 derniers caractères?

J'ai un champ Char(15) , dans ce domaine j'ai datatables ci-dessous:

 94342KMR 947JCP 7048MYC 

Je dois décomposer ceci, j'ai besoin d'get les derniers 3 caractères de DROITE et j'ai besoin de tout ce qui est à gauche. Mon problème est que le code sur la gauche n'est pas toujours la même longueur que vous pouvez voir.

Comment puis-je accomplir cela en SQL?

Je vous remercie

 SELECT RIGHT(RTRIM(column), 3), LEFT(column, LEN(column) - 3) FROM table 

Utilisez RIGHT w / RTRIM (pour éviter les complications avec une colonne de longueur fixe), et LEFT couplé avec LEN (pour ne prendre que ce dont vous avez besoin, exempt des 3 derniers caractères).

S'il y a jamais une situation où la longueur est <= 3, alors vous devrez probablement utiliser une instruction CASE pour que l'appel LEFT ne devienne pas gourmand.

Vous pouvez utiliser RTRIM ou RTRIM votre valeur à VARCHAR :

 SELECT RIGHT(RTRIM(Field),3), LEFT(Field,LEN(Field)-3) 

Ou

 SELECT RIGHT(CAST(Field AS VARCHAR(15)),3), LEFT(Field,LEN(Field)-3) 

Voici une alternative utilisant SUBSTRING

 SELECT SUBSTRING([Field], LEN([Field]) - 2, 3) [Right3], SUBSTRING([Field], 0, LEN([Field]) - 2) [TheRest] FROM [Fields] 

avec violon

 select right(rsortingm('94342KMR'),3) 

Cela ira chercher les 3 dernières strings de droite.

 select subssortingng(rsortingm('94342KMR'),1,len('94342KMR')-3) 

Cela va chercher les caractères restants.