2012-03-29 18 views
1

Ok, also tring ich die erste der letzten 2 Ziffern einer Zahl. Nehmen wir zum Beispiel 12345601, ich möchte wissen, ob der vorletzte numerische Wert eine 0 ist. Wenn 0, dann brauche ich nur die letzte Ziffer des int, wenn anders als 0, wähle die letzten 2 Ziffern. das ist, was ich habe:Teilstring in Tsql mit Länge

declare @myint int 
set @myint= 12345601 
select case when substring(cast (@myint as varchar(50)) , len(@myint)-1, len(@myint)-1)  = 0 then right(@myint, 1) 
else right(@myint, 2) end 

Leider ist es nicht funktioniert und das ist, wo:

substring(cast (@myint as varchar(50)), len(@myint)-1, len(@myint)-1) 

dass Teilzeichenfolge bei 01 herauskommt, aber ich brauche es als 0 zu kommen. Irgendwelche Ideen?

+0

Sie können dies mit einigen Abteilungen und Erinnerungen lösen ... –

+0

Erinnerungen, also über Reste – sasfrog

+2

Teilzeichenfolge (Ausdruck, Start, _length_) – Steve

Antwort

1

Versuchen Sie stattdessen:

SELECT CAST(RIGHT(@myint,2) as int) 

Wenn Sie es als int werfen sollte es die führende Null sowieso Streifen ...

Sie können es in Aktion mit dem Code siehe unten:

declare @myint int 
set @myint= 12345601 
SELECT CAST(RIGHT(@myint,2) as int) 
set @myint= 12345611 
SELECT CAST(RIGHT(@myint,2) as int) 
3

Versuchen Sie folgendes:

SELECT CASE WHEN LEFT(RIGHT(@myint,2),1) = 0 THEN RIGHT(@myint,1) ELSE RIGHT(@myint,2) END 
+0

Das hat funktioniert, danke! – user1301842

+0

@Abe Miessler Antwort sehen es ist eine gute Lösung. –