2016-04-20 10 views
0

Ich muss eine SQL-Abfrage schreiben, wo ich die Ergebnisse mit dem Excel-Würfel vergleichen kann. Für die jeweilige Tabelle wurde sie für alle Vertragsnummern mit nur 5 Ziffern aktualisiert, wobei sie vor jeder fünfstelligen Zahl 0 hinzugefügt haben. Und sie ließen die verbleibende Zahl, d. H. 6-stellige Zahlen, gleich. Aber diese Aktualisierung wird im ETL-Paket durchgeführt und die hinzugefügte 0 ist für mich transparent, dh ich kann sie in der Tabelle nicht sehen.Wie schreibe ich eine SQL-Abfrage für diesen Fall?

Zum Beispiel: für 90034 fügten sie 0 am Anfang der Zahl hinzu, d. H. 090034, aber im ETL-Paket scheint es 90034 in der Tabelle zu sein, wo 0 vor 90034 transparent ist.

Und in Excel Würfel alle Zahlen sind 6-stellige Zahlen ab., 090034

Also, wie kann ich eine SQL-Abfrage schreiben zu prüfen, ob alle 5-stelligen Nummern werden mit dem 0 am Anfang hinzugefügt und Vergleichen Sie es mit Excel Cube?

+0

Was ist der Datentyp der Spalte, die die Daten in Ihrer Datenbank enthält? –

+0

Ihr Problem besteht möglicherweise darin, dass Sie Zeichenketten in einem numerischen Datentyp speichern, der die führenden Nullen entfernen würde. – HLGEM

+0

Die Spalte in der Tabelle ist eine Zeichenfolge –

Antwort

0

Hier ist ein Ausschnitt, die führende Nullen auf Zahlen von sechs oder weniger Ziffern hinzufügen wird:

select right('000000' + convert(varchar(6), MyID), 6) 

, dass diese Ihre Spalt übernimmt MyID genannt werden, und dass es ein numerischer bereits Datentyp. Wenn es bereits eine Zeichenfolge, können Sie dies versuchen:

select right('000000' + ltrim(rtrim(MyID)), 6) 

HAFTUNGSAUSSCHLUSS: Dieses wurde aus dem Speicher durchgeführt und nicht geprüft.

+0

Die Spalte in der Tabelle ist eine Zeichenfolge. –

+0

Got it thank you :) –

0

Es ist besser für Vergleichszwecke, wenn die Daten in der Datenbank als Varchar oder Nvarchar gespeichert werden, da es eindeutig keine Zahl ist oder keine führenden Nullen hätte.

Wenn Sie dies jedoch nicht beheben können und die Anzahl der gesamten Zeichen kennen, die die Zeichenfolge haben sollte, würde diese Methode helfen.

create table #test (myfield int) 
insert into #test (myfield) 
values(090034) 
select * from #test 
select Right('000000' + cast(myfield as varchar(6)) , 6) from #test 
+0

Got it danke :) –

Verwandte Themen