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.