2010-12-30 15 views
0

Ich versuche eine SQL-Abfrage zu schreiben, um einige Informationen aus einem "Schlüsselwert" -Feld zu erhalten.Abrufen von Informationen aus einem Schlüsselwertfeld sql

  • Beispiel Feld: A<1,?,'wfinitiation'=A<1,?,'DocID'=56581,'DocVersion'=0>>

Ist es möglich, mit einem SqlFunction nur die DocID zu wählen?

  • Ergebnis im Beispiel wäre: 56581

Welche Funktion kann ich verwenden?

Thx

+0

Sie bezeichnen Ihre Daten als "Felder". Das ist die OO-Sprachen-Nomenklatur. In welchem ​​Format sind deine Daten genau? Ps. Sie zeigen mehrere Felder als "Feld" an. – IamIC

+0

Es ist ein Feld in der Datenbank, das diese Informationen enthält. Ich möchte den Wert DocID in meiner SQL-Abfrage auswählen. – Masna

Antwort

1

Wenn Sie die einzelnen Werte in dieser Spalte enthaltenen Abfrage müssen Sie die Informationen zu extrahieren und speichern sie in einem relationalen Format in Betracht ziehen sollten. Momentan verletzen Sie die 1. Normalform.

Das heißt, Sie können substring und charindex dafür verwenden.

DECLARE @key VARCHAR(20) 
SET @key='DocID'; 

DECLARE @Search VARCHAR(30) 
SET @Search='''' + @key + '''='; 

WITH your_table(col) 
    AS (SELECT 'A<1,?,''wfinitiation''=A<1,?,''DocID''=56581,''DocVersion''=0>>') 

SELECT Substring(col, Charindex(@Search, col) + Len(@Search), 
       Charindex(',', 
       REPLACE(col, '>', ','), Charindex(@Search, col)) - (
       Charindex(@Search, col) + Len(@Search))) AS value 
FROM your_table 
+0

Thx für die Antwort. Ich weiß, dass diese Tabelle die normale Form verletzt, aber es ist eine Tabelle einer Datenbank von einer anderen Anwendung. – Masna

Verwandte Themen