Gespeicherte Prozedur, eine Zeichenfolge zu analysieren
Muss ich schreiben, eine gespeicherte Prozedur für die Eingabe einer Zeichenfolge.
Die Eingabe-Zeichenfolge enthält den Namen der Variablen und Ihre Werte, getrennt durch die pipeline Trennzeichen wie diese:
Name =Praveen | City=Hyderabad | Mobile=48629387429| Role=User| etc
In der gespeicherten Prozedur deklariert haben Variablen wie @x, @y, @z, @t
, um Werte zu erhalten, wie
@x=Praveen (Name value)
@y=Hyderabad (City Value)
@z=48629387429(Mobile Value)
@t=User(Role Value)
Auch input-string haben, können die Werte in beliebiger Reihenfolge wie
City=Hyderabad | Mobile=48629387429 | Role=User | Name =Praveen |etc
Sobald ich parse die Werte in @x, @y, @z, @t
usw ich habe diese Werte verwenden, die in der gespeicherten Prozedur.
Bitte teilen Sie mir, wie kann ich das Parsen der input-string zu erhalten, die Werte der Name, City, Mobile, Role
in @x, @y, @z
und @t
bzw.
- Es wäre viel einfacher, mit 4-Parameter anstelle von 1
- Ich habe versucht, zu analysieren, die string-Funktionen wie CHARINDEX,SUBSTRING, konnte aber nicht in der Lage, herauszufinden, die Logik.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine mögliche Lösung ist die Verwendung von XML -
Empfehle ich auf jeden Fall dabei Ihre string-parsing auf der Programm-Seite im Gegensatz zu den Daten der Seite. That being said, wenn Sie unbedingt müssen, können Sie versuchen, etwas zu tun ähnlich wie diese:
Zurück:
Beachten Sie, dass die Länge addedfrom die
CHARINDEX
in den ersten Abfragen sind gleich der such-string."Name=" ist gleich 5 Charaktere, also fügen wir 5 den index verschieben Vergangenheit das = - Zeichen,
"Mobile=" ist gleich 7, so dass wir hinzufügen 7.
Ebenso am Ende
SELECT
Abfrage-wir subtrahieren von 1 von jederCHARINDEX
zu löschen, das symbol|.Quellen:
SUBSTRING
CHARINDEX
LINKS
LTRIM
RTRIM
Angenommen, Ihre Eingabe param aufgerufen, @Text.
Dann einfach wiederholen Sie diese Schritte für @y, @z, @t Name ändern= zu was auch immer Ihre Pause ist.
Hier ist eine unterhaltsame Art und Weise mit Hilfe einer Schleife für string-manipulation. Beachten Sie, wie definieren wir unsere @x, @y, etc. variable zu packen, einen bestimmten Wert.
Auch, aus dem unregelmäßigen Abstand in Ihrem Eingang, ich vermute, Sie kürzen wollen alles kommen (das ist, warum diese proc nicht, dass alle über dem Platz).