Wie Sie überprüfen, ob das XML-element hat das Attribut mit einem leeren string-Wert
Gibt es eine Möglichkeit zu überprüfen, dass der Wert eines Elements in das XML-Feld eine leere Größe mit SQLXML? Betrachten ich habe folgende Daten in der Spalte Conf
der Tabelle Test
:
<Conf>
<UserData>
<data type="str" value="" />
</UserData>
</Conf>
Kann ich überprüfen, dass data
vorhanden ist, mit der folgenden SQL Anfrage:
SELECT Test.Conf.exist('/Conf/UserData/data') FROM Test;
Aber wie kann ich überprüfen, ob data
hat eine leere value
? Es könnte so etwas wie die folgenden, aber es funktioniert nicht:
SELECT Test.Conf.value('(/Conf/UserData/data/@value)[1]', 'nvarchar(max)')='' FROM Test;
Meine Letzte Lösung ist die Verwendung der folgenden SQL-Anweisung:
SELECT Test.Conf.value('string-length(/Conf[1]/UserData[1]/data[1]/@value)', 'int') FROM Test;
InformationsquelleAutor Kirill V. Lyadvinsky | 2011-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung Von XPath 1.0.
string(@someattribute)
test sollte false zurückgeben, wenn Sie leer sind. Ich weiß nichts über die SQLXML -, aber es wird funktionieren, wenn Sie mit einer Steuer-Sequenz.string-length
Funktion macht den job.InformationsquelleAutor Renaud
Möglicherweise arbeiten.
Diese prüft, ob ein Datenelement mit
@value = ''
vorhanden ist.InformationsquelleAutor Jonathan
Das problem ist nicht mit XPath aber mit TSQL-syntax.
XML.Exist
gibt einen BIT-Datentyp, der angibt, ob es existiert. SQL Server hat keine native BOOLEAN-Datentyp (eine echte true/false).Also, deine Abfrage sollte wurden
InformationsquelleAutor RichardTheKiwi