Inhalt Felder mit ~@@@~ löschen

  • Allgemein

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Nitro.

    Inhalt Felder mit ~@@@~ löschen

    Hallo zusammen,



    ich habe eine Datenbank übernommen mit vielen Inhalten. Es gibt aber leider keine leeren Felder sondern, sondern eigentlich leere Felder sind durch einen Import vor einigen Jahren mit ~@@@~ gekennzeichnet. Gibt es die Möglichkeit in einer SQL-DB Werte löschen zu lassen? Also es soll ja nicht die ganze Zeile gelöscht werden, sondern nur der Inhalt dieser entsprechenden Zelle.



    Ich hoffe ihr versteht was ich meine.



    Grüße
    Also falls du einen MSSQL-Server verwendest in Version 2000 oder höher, dann kann ich dir folgendes kleines Script anbieten, hab mal schnell was zusammengetippt, hoffe das funktioniert so für dich



    SQL-Abfrage

    1. USE [DEINEDB]
    2. DECLARE @tbl nvarchar(150)
    3. DECLARE @value nvarchar(150)
    4. DECLARE @clm nvarchar(150)
    5. DECLARE @ClmToUpdate nvarchar(150)
    6. DECLARE @Upd nvarchar(max)
    7. DECLARE db_Cursor CURSOR FOR
    8. SELECT sys.all_objects.name AS TABELLE, sys.all_columns.name AS SPALTE
    9. FROM sys.all_objects, sys.all_columns
    10. WHERE type_desc = 'USER_TABLE'
    11. And sys.all_columns.object_id = sys.all_objects.object_id
    12. OPEN db_Cursor
    13. FETCH NEXT FROM db_Cursor INTO @tbl, @clm
    14. WHILE @@FETCH_STATUS = 0
    15. Begin
    16. set @ClmToUpdate = @tbl + '.' + @clm
    17. SET @Upd = 'UPDATE ' + @tbl + ' SET ' + @clm + ' = NULL WHERE ' + @clm + ' LIKE ''%~@@@~%'''
    18. EXEC sp_executesql @Upd
    19. FETCH NEXT FROM db_Cursor INTO @tbl, @clm
    20. END
    21. CLOSE db_Cursor
    22. DEALLOCATE db_Cursor


    Viel Spass damit ;)

    PS: Eine kleine Rückmeldung wäre schön. - Vielen Dank
    Hallo,

    ich werde es heute Abend mal testen. Problem ist halt auch, dass in einer Zeile mehrere Spalten ein ~@@@~ enthalten können. Somit kann ich nicht einfach UPDATE table SET name='NULL' WHERE name='~@@@~'

    Das Feld vorname könnte auch ein ~@@@~ enthalten.

    Und es handelt sich nur um die Tabelle "User".

    UPDATE (doch gleich getestet):

    Es funktioniert! Aber es kommt folgende Meldung:

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.

    Meldung 8116, Ebene 16, Status 1, Zeile 1

    Der Argumentdatentyp varchar ist fr das 2-Argument der like-Funktion ungltig.



    Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „flotschi“ ()

    ich teste gleich mal bei mir ...


    EDIT:


    Hab das ganze getestet, meine Funktion durchläuft ja anhand der Systemtabellen sämtliche Tabellen und deren Spalten, trifft der Cursor dabei auf ein Feld, dass vom Typ nicht nvarchar, varchar, text oder char ist, erscheint der Fehler.

    Das Script sollte diese Fehlermeldung also nicht bei allen Spalten bringen.

    Bei mir funktioniert das ganze ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nitro“ ()