Dies ist mein Sql Fiddle mit Schema und Daten. Die SQL-Abfrage, die ich geschrieben habe, funktioniert einwandfrei und gibt die Daten zurück.SQL-Daten mit unnötigen Platz auf der rechten Seite
http://sqlfiddle.com/#!6/bcf65/4
Aber die Verwirrung ist, warum ich „Raum“ zu tun haben, wenn ich niemals angelegt habe, während die Daten in der Tabelle einfügen. Für Beispielansicht dieses Teil des Codes aus der Abfrage:
(SUBSTRING
(
[xml]
,CHARINDEX('P',[xml]) + 3
,LEN([xml])-8
)
in SubString
Funktion Ich habe etwas Platz entfernen LEN([xml])-8
das Ergebnis zu erhalten.
Lassen Sie uns zwei Szenarien annehmen: (beide sind von SQL Fiddle INSERT-Abfrage)
i
177PKR3572427992899
mit Daten, die eine Reihe haben. Seine Gesamtlänge beträgt 19. Also in SubString-Funktion oben verwendet, ist seine Startposition7
, d. H.3
nachR
in Daten und um seine Länge beim Überspringen der letzten 2 Ziffern zu erhalten, sollte dieLen()
Funktion sein. Aber stattdessen muss ich-8
verwenden, um die letzten 2 Ziffern zu überspringen. Es ist wirklich verwirrend für mich, woher dieser Raum kam? Lass uns jetzt den zweiten sehen.Ich habe eine Zeile mit Daten
0PKR101
. Seine Gesamtlänge ist "7". Also in SubString-Funktion in SQL Fiddle ist seine Startposition4
, d. H.1
nachR
in Daten und dieLen()
Funktion sein, um seine Länge zu erhalten, während die letzten 2 Ziffern überspringen. Aber, stattdessen muss ich-6
hier verwenden, um die letzten 2 Ziffern zu überspringen. Wie kann ich es alslen(xml)-1
funktioniert, wie es sein sollte ..
Ich bin neugierig: Warum nennst du deine Spalte '[xml]', tag die Frage als solche, aber ich kann keine XML-bezogenen Sachen sehen? – Shnugo
@Shnugo Entschuldigung entfernt das XML-Tag. Nun, diese Werte werden aus xml-Dateien in die Spalte geholt, also ja ... – ARr0w