NULL erstezen

LauraM schrieb:
Hi, ich habe das so gemacht
Code:
UPDATE tab1 SET spalte1='' WHERE spalte1 ='null'

Allerdings wnn ich jetzt xml aufbaue, dann die Tagselemente sind trotzdem gezeigt, allerdings ohne Inhalt.
Wie kann ich die Tagselemnte, die kein Inhalt haben- nicht anzeigen lassen?

Ich habe Leerzeichen in die leere Felder eingetragen, aber es funktioniert nicht. Die leere Elemente werden trotzdem erzeugt.
Ich dachte, wenn ich Leerzeichen in der Spalte1 habe, baue ich xml, wird dann einfach leerzeichen in dem Programm hochgeladen und gut ist. Tatsächlich ist so, wenn ich Leerzeichen habe, oder nichts habe, ist das in xml als Tag angezeigt und kann ich die xml zu meinem Programm nicht hochladen, da das Programm sagt mir, dass die spalte1 ausgefüllt sein soll. Deshalb suche ich eine Lösung, wo: wenn in spalate1 kein Wert vorhanden, ist null, etc , dann bitte nicht als Element in XML darstellen.
 
LauraM schrieb:
ist das in xml als Tag angezeigt und kann ich die xml zu meinem Programm nicht hochladen
Da du immer noch nicht mit der Sprache rausrückst, was genau du nun damit vorhast, welches Programm das ist, und so weiter, bin ich an dieser Stelle raus. Es ist zwecklos, dir zu helfen.

Du gibst keinerlei Informationen preis, antwortest nicht auf Fragen und erstellst einen Thread nach dem anderen, weil du dich nur von Problem zu Problem hangelst, ohne darauf einzugehen, dass dir schon von vielen Leuten nahegelegt wurde, dein Projekt grundlegend zu überdenken - oder es zumindest einigermaßen vollständig zu beschreiben, in einem Thread, mit reallistischen Beispieldaten und vor allem mit der Info welche Programme noch beteiligt sind, damit man dir zielgerichtet beim Konzept helfen kann und dich nicht aus einer Sackgasse nach der nächsten lotsen muss....

Wie oben erwähnt kannst du notfalls den XML-Export durch einen Texteditor deiner Wahl laufen lassen und die leeren Tags einfach suchen und ersetzen. Das hilft dir dann vermutlich nur 10 Minuten weiter bis du vor dem nächsten Problem stehst.

LauraM schrieb:
Deshalb suche ich eine Lösung, wo: wenn in spalate1 kein Wert vorhanden, ist null, etc , dann bitte nicht als Element in XML darstellen.
Das ist in einer Programmiersprache binnen Sekunden gelöst, weil eine Programmiersprache dafür konzipiert wurde "Wenn X, dann Y" zu verarbeiten. Eine Datenbank bzw. SQL ist keine Programmiersprache. Dementsprechend limitiert sind dort die Möglichkeiten, weil eine Datenbank Daten speichert und abruft, aber nicht verarbeitet.
 
  • Gefällt mir
Reaktionen: Myron und Drexel
Ich versuche mich deutlich auszusprechen:
In diesem Fall:
  • wenn ein Feld leer ist, (keine Werte vorhanden), dann ignoriere und geh weiter (also wird in diesem Moment kein Element entstehen)
  • wenn ein Feld befüllt ist, übernehme den Wert und erstelle einen enstprechenden Element dazu.
meine Code funktioniert:
Code:
WITH XMLNAMESPACES (
'temp.firma' as commons,
'zeitung' as v1)

select
spalte1 as 'v1:titel',
spalte2 as 'v1:code',
spalte3  as 'v1:author'
from tab1

FOR XML PATH('temp:zeitung'), ROOT('temp:zeitungen')

Nun als Ergebnis möchte ich die leere Elemente nicht haben. Das muss möglich sein irgendwie in meine Abfrage zu interpretieren, oder?

Ich kann mir vorstellen, dass untser spalte1 as 'v1:titel' muss Bedingung stehen, wie: if ist leer, dann ignoriere und geh weiter'
 
Zuletzt bearbeitet:
Raijin schrieb:
Eine Datenbank bzw. SQL ist keine Programmiersprache. Dementsprechend limitiert sind dort die Möglichkeiten, weil eine Datenbank Daten speichert und abruft, aber nicht verarbeitet.
Wenn wir von reinem SQL sprechen würden, wäre ich bei dir. Im Fall von TE, der/die auf MS SQL setzt, ist mit T-SQL auch das Arbeiten mit den IF, THEN, ELSE etc. Konstrukten möglich.

Wie du aber schon angemerkt hast, ist dem TE nicht zu helfen, ohne näheres zu wissen.
 
Das das ganze Element ignoriert werden soll ist was ganz anderes als das bisherige "NULL ersetzen". Guck mal nach der Option ABSENT.
 
Ergänzung ()

G-Red schrieb:
Wenn wir von reinem SQL sprechen würden, wäre ich bei dir. Im Fall von TE, der/die auf MS SQL setzt, ist mit T-SQL auch das Arbeiten mit den IF, THEN, ELSE etc. Konstrukten möglich.

Wie du aber schon angemerkt hast, ist dem TE nicht zu helfen, ohne näheres zu wissen.
Könntest du mir sagen, wie ich das eventuell formulieren kann, bitte?
Es geht um 2 Spalten und wollte ich so formulieren:
Code:
spalte2 as 'v1:code',
(case spalte2 ='', then .....und hier weiss ich nicht wie ich formulieren soll (wenn spalte2 ist leer, dann schreibe keinen Element in xml)
spalte3  as 'v1:author'
(case spalte3='', then .....und hier weiss ich nicht wie ich formulieren soll (wenn spalte3 ist leer, dann schreibe keinen Element in xml)
 
Zuletzt bearbeitet:
Kommt ja jeden Tag ne neue Einzelfrage zu einer Funktion.

Man kann hier einfach nicht mehr ruhigen Gewissens antworten ohne mehr Informationen zu haben.
 
  • Gefällt mir
Reaktionen: Myron und Raijin
Darlis schrieb:
Das das ganze Element ignoriert werden soll ist was ganz anderes als das bisherige "NULL ersetzen". Guck mal nach der Option ABSENT.
Hallo, ich habe zu dieser Funktion folgendes gefunden:
absent on null soll man in der XML Abfrage integrieren, leider kriege ich Fehler:
Code:
WITH XMLNAMESPACES (
'temp.firma' as commons,
'zeitung' as v1)

select
spalte1 as 'v1:titel',
spalte2 as 'v1:code',
spalte3  as 'v1:author'
absent on null
from tab1

FOR XML PATH('temp:zeitung'), ROOT('temp:zeitungen')


Falsche Syntax in der Nähe von "absent".
 
Ich denke eher du bist der Fehler....
 
Darlis schrieb:
Das das ganze Element ignoriert werden soll ist was ganz anderes als das bisherige "NULL ersetzen". Guck mal nach der Option ABSENT.
Ich habe die Funktion am Ende gemacht:
FOR XML PATH('temp:zeitung'), ROOT('temp:zeitungen'), elements absents.

ich habe keinen fehler bekommen , aber auch sind die "leere" Elemente geblieben.
Ergänzung ()

schmedd9r schrieb:
Ich denke eher du bist der Fehler....
Warum bin ich Fehler? warum nennst du mich sso? weil du besser weißt. Es kann gut sein, aber kann man doch anderen behiflich sein.
 
Nein wir sind dir die ganze Zeit behilflich. Du machst massig Threads auf und stellst immer nur eine Frage zu einer Funktion.

Das ganze geht jetzt schon über Wochen.... Ganz zu schweigen, dass es gut möglich sein könnte, dass dein Arbeitgeber dich fristlos kündigt, wenn er erfährt was du machst. Können wir aber nicht wirklich beurteilen weil ja immer neue Fragen und Probleme von dir keine relevanten Informationen zum Projekt kommen.
 
  • Gefällt mir
Reaktionen: Myron
LauraM schrieb:
ich habe keinen fehler bekommen , aber auch sind die "leere" Elemente geblieben.
Das ist weil bei dir nicht mehr NULL steht sondern 'null'. Wie gesagt, das sind zwei ganz verschiedene Sachen. Jetzt müsstest du dein Update wieder rückgängig machen damit es (wahrscheinlich) funktioniert
 
Oelepoeto schrieb:
Das ist weil bei dir nicht mehr NULL steht sondern 'null'. Wie gesagt, das sind zwei ganz verschiedene Sachen. Jetzt müsstest du dein Update wieder rückgängig machen damit es (wahrscheinlich) funktioniert
Dankeschön, ich habe das mit der Tip von Darlis gelöst!

Die Option Absent hat es funktioniert.

Vielen Dank!
 
Einfach mal die finale Lösung ist wohle keine Option? Naja, wozu auch, bei dem Thread hier fehlt ja im Prinzip auch der komplette Anfang. Aber es könnte ja trotzdem einer auf die Idee kommen mit einem ähnlichen Problem die Suchfunktion zu benutzen. So funktioniert das teilen von Wissen im Netz, sieh dir mal SO als Parade-Beispiel an.

Viele Erfolg trotzdem weiterhin
 
Keine Ahnung warum die Mods nu gerade meinen letzten Beitrag moderiert haben. Ich vermute stark, dass derjenige Mod sich nicht mit der Gesamtheit der Threads vertraut gemacht hat.

Es geht hier um über 1 Million Datensätze, die mindestens Telefonnummern und Adressen umfassen. Wer da noch an ein private Nutzung im Sinne einer Mitgliederliste für den Schützenverein glaubt, sollte vielleicht nochmal darüber nachdenken. Wenn sich solche Daten in Händen befinden, die ganz offensichtlich nicht damit umgehen können, ist das grob fahrlässig.
 
  • Gefällt mir
Reaktionen: schmedd9r
ich glaube aber eher nicht dass das irgendwo produktiv eingesetzt werden soll. Dann würde man ja eher jemanden mit SQL Kenntnissen ransetzen, hier klang das ja eher nach einem ungelernten ITler der mal versucht ETL oder was auch immer zu machen. Ich muss zugeben, ich hab bis heute noch nicht das große ganze verstanden, also das Ziel des ganzen Projektes. Ich habe zwar mehrmals drum gebeten, aber wurde gekonnt ignoriert. Dabei fängt dabei dir BEratung eigentlich an, man hätte sicherlich andere Wege und Werkzeuge empfehlen können.
 
Zurück
Oben