2017-02-15 3 views
0

Ich habe eine Anforderung, wo ich den Spaltenwert in eine deklarierte Variable speichern muss, ist es sowieso möglich. Ich verstehe, dass eine Variable nur einzelne Werte und nicht mehrere Werte speichern kann. Aber in meinem Fall brauche ich es schlecht.Variablendeklaration zum Speichern mehrerer Werte wie voller Spaltenwert

Was ich hier habe, ist die Spalte zu setzen, wenn der Datumswert, der in INT ist, in die Datumsspalte konvertiert werden muss und in dieser Variable gespeichert werden muss, um sie zu vergleichen.

Ich habe einige Spalte mit Werten wie unter

"A(B_CD_EE_FF_DFE)_ERT" 

Also muss ich diese zwei neigbaren Metallbügeln und Verfahren entfernen.

Set @Variable= (SELECT replace (replace (replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName) 
, CHARINDEX(')',TXMLFileName) - CHARINDEX(')', reverse (TXMLFileName))) , ')', '') ,'(' ,'') ,'.xml' , '') 

from 
tblXML) 

gibt mir Fehler und unten gibt Antwort, wie ich nur oben 1.

Set @Variable= (SELECT top 1 replace (replace (replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName) 
, CHARINDEX(')',TXMLFileName) - CHARINDEX(')', reverse (TXMLFileName))) , ')', '') ,'(' ,'') ,'.xml' , '') 

from 
tblXML) 

SO ist es eine bekannte Lösung ... wählen ????? Vielen Dank im Voraus

+0

Im ersten Abfrageergebnis enthält mehrere Zeilen und dies verursacht einen Fehler. Da mehrere Zeilen Daten nicht in einer einzelnen Variable gespeichert werden können. aber das ist nicht der Fall in der zweiten Abfrage. In der zweiten Abfrage geben Sie nur einen Spaltenwert zurück. und dieser einzelne Wert kann in einzelnen Variablen gespeichert werden –

+2

SQL-Server haben zwei Datentypen, die designed sind, um mehrere Werte zu halten - einer ist eine Tabelle und der andere ist XML. Sie können eine Tabellenvariable oder eine XML-Variable deklarieren. Ansonsten ist deine Frage sehr unklar. –

+0

Ich weiß nicht, wo Sie * diese Werte in einer Variablen schlecht brauchen *, aber es könnte ausreichen, Ihre erste Anfrage als 'CTE' zu verwenden. Wenn du noch Hilfe brauchst, poste bitte einige (reduzierte) * real-world * Beispiele und die erwartete Ausgabe und einige Details, was du damit machen wirst. – Shnugo

Antwort

0
declare @tblXML table (TXMLFileName varchar(50)) 
insert into @tblXML values 
('A(B_CD_EE_FF_DFE)_ERT'), 
('(EE_FF_DFE)_ERT'), 
('A(B_CD_EE)') 

declare @tmp varchar(max) 
SET @tmp = '' 
SELECT @[email protected]+ replace (replace (replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName) 
, CHARINDEX(')',TXMLFileName) -1) , ')', '') ,'(' ,'') ,'.xml' , '')+''' ''' 
from 
@tblXML 

select ''''[email protected] 

oder Sie nicht auf einzelne Zeilen wollen diese

SELECT ''''+ replace (replace (replace (SUBSTRING(TXMLFileName, CHARINDEX('(', TXMLFileName) 
, CHARINDEX(')',TXMLFileName) -1) , ')', '') ,'(' ,'') ,'.xml' , '')+'''' 
from 
@tblXML 
+0

Danke für Hilfe. Aber das gibt mir wieder nur eine einzige Zeile. –

+0

Die aktualisierte Abfrage gibt mir noch Ausgang in einreihigen wie unten .B_CD_EE_FF_EE_FFB_CD_EE Ich habe eine Tabelle, die eine Spalte hat Tausende von Zeilen in folgendem Format mit dh wenn die Eingangswerte sind ‚(A (B_CD_EE_FF_DFE) _ERT‘) ('(EE_FF_DFE) _ERT') ('A (B_CD_EE)') dann der erwartete Ausgang ist Klammern entfernt und ist wie folgt: '** ** B_CD_EE_FF_DFE' '** ** EE_FF_DFE' " ** B_CD_EE ** ' –

1

eine Variable verwenden, braucht nicht nur einen einzigen Wert zu speichern. Sie können z. Benutzerdefinierte Tabellentypen

CREATE TYPE MyCustomType AS TABLE (
    MyCustomTypeId INT, 
    MyCustomValueColumn VARCHAR(100) 
) 

Oder deklarieren Sie einfach eine vergleichbare Tabelle Variable inline, wo erforderlich.

Verwandte Themen