suchen
HeimDatenbankMySQL-TutorialWie gehe ich mit der NULL-Typumwandlung in mehrzeiligen PostgreSQL-Updates um?

How to Handle NULL Type Casting in PostgreSQL Multi-Row Updates?

Umwandeln des NULL-Typs in mehrzeilige Aktualisierungen

In PostgreSQL kann die Ausführung einer Aktualisierungsabfrage für mehrere Zeilen zu Fehlern beim Umgang mit NULL führen Werte, wenn die Spaltentypen nicht explizit umgewandelt werden. In diesem Artikel werden mehrere Lösungen für dieses Problem untersucht und alternative Ansätze bereitgestellt, um eine ordnungsgemäße Typumwandlung bei mehrzeiligen Aktualisierungen sicherzustellen.

Lösung 1: Wählen Sie Limit 0 mit VALUES und UNION ALL

UPDATE foo f
SET    x = t.x
     , y = t.y
FROM  (
  (SELECT pkid, x, y FROM foo LIMIT 0) -- Get column types
   UNION ALL
   VALUES
      (1, 20, NULL)  -- No type casts
    , (2, 50, NULL)
   ) t               -- Column names and types defined
WHERE  f.pkid = t.pkid;

Diese Methode kombiniert eine SELECT-Anweisung mit einem LIMIT von 0, um Spaltennamen und -typen abzurufen, und hängt dann die gewünschten Datenzeilen mithilfe des UNION ALL-Operators an. Die erste Zeile der Unterabfrage stellt sicher, dass die entsprechenden Spaltentypen für die nachfolgenden Zeilen definiert werden.

Lösung 2: Wählen Sie Limit 0 mit VALUES und UNION ALL SELECT

UPDATE foo f
SET    x = t.x
     , y = t.y
FROM  (
  (SELECT pkid, x, y FROM foo LIMIT 0) -- Get column types
   UNION ALL SELECT 1, 20, NULL
   UNION ALL SELECT 2, 50, NULL
   ) t               -- Column names and types defined
WHERE  f.pkid = t.pkid;

Ähnlich wie Lösung 1 verwendet dieser Ansatz SELECT, um Spaltentypen abzurufen, und verwendet dann einzelne SELECT-Anweisungen, um Datenzeilen anzuhängen, wodurch ein vorzeitiger Typ verhindert wird Casting.

Lösung 3: VALUES-Ausdruck mit spaltenspezifischem Typ

UPDATE foo f
SET    x = t.x
     , y = t.y
FROM  (
   VALUES 
     ((SELECT pkid FROM foo LIMIT 0)
    , (SELECT x    FROM foo LIMIT 0)
    , (SELECT y    FROM foo LIMIT 0))  -- Get type for each col individually
   , (1, 20, NULL)
   , (2, 50, NULL)
   ) t (pkid, x, y)  -- Columns names not defined yet, only types.
...

Diese Lösung definiert die Spaltentypen innerhalb des VALUES-Ausdrucks selbst und stellt sicher, dass die nachfolgenden Zeilen werden in diese Typen umgewandelt, ohne dass aufgrund automatischer Typannahmen Fehler auftreten.

Lösung 4: VALUES-Ausdruck mit Zeilentyp

UPDATE foo f
SET x = (t.r).x         -- Parenthesis for unambiguous syntax
  , y = (t.r).y
FROM (
   VALUES
      ('(1,20,)'::foo)  -- Columns need to be in table default order
     ,('(2,50,)')       -- Nothing after last comma for NULL
   ) t (r)              -- Column name for row type
WHERE  f.pkid = (t.r).pkid;

Dieser Ansatz verwendet den Zeilentyp der spezifischen Tabelle, sodass Sie Spalten implizit in die richtigen Typen umwandeln können. Sie können mithilfe der Feldauswahlsyntax auf einzelne Spaltenwerte zugreifen.

Lösung 5: VALUES-Ausdruck mit zerlegtem Zeilentyp

UPDATE foo f
SET    x = t.x
     , y = t.y
FROM (
   VALUES
      (('(1,20,)'::foo).*)  -- Decomposed row of values
    , (2, 50, NULL)
   ) t(pkid, x, y)  -- Arbitrary column names (match table columns)
WHERE  f.pkid = t.pkid;     -- Eliminates 1st row with NULL values

Ähnlich wie Lösung 4, jedoch mit zerlegten Zeilen um Datenwerte anzugeben. Dadurch können Sie nur die relevanten Spalten bereitstellen und müssen nicht die vollständige Reihenfolge und die Typen aller Spalten in der Tabelle kennen.

Die Auswahl der besten Lösung hängt von Faktoren wie Leistung, Komfort und Verfügbarkeit ab Informationen zu Spaltentypen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit der NULL-Typumwandlung in mehrzeiligen PostgreSQL-Updates um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
MySQL String Typen: Speicher, Leistung und Best PracticesMySQL String Typen: Speicher, Leistung und Best PracticesMay 10, 2025 am 12:02 AM

MySQLstringtypesimpactstorageandperformanceasfollows:1)CHARisfixed-length,alwaysusingthesamestoragespace,whichcanbefasterbutlessspace-efficient.2)VARCHARisvariable-length,morespace-efficientbutpotentiallyslower.3)TEXTisforlargetext,storedoutsiderows,

MySQL -String -Typen verstehen: Varchar, Text, Zeichen und mehrMySQL -String -Typen verstehen: Varchar, Text, Zeichen und mehrMay 10, 2025 am 12:02 AM

Mysqlstringtypesincludevarchar, Text, char, enum, undset.1) varcharisversatileforVariable-LengthStringuptoaspecifiedLimit.2) TextissidealforlargetextStorageWithoutadefinedLimit.3) charisfixed-längen, geeigneter ForconsistentDatalikeCodecodes.4) EnumforcesDataTaTaTableConSconsistentDatalikaScodes.4)

Was sind die String -Datentypen in MySQL?Was sind die String -Datentypen in MySQL?May 10, 2025 am 12:01 AM

MySqloffersVariousStringDatatypes: 1) Charforfixed-Länge-Strings, 2) varcharforvariable-Lengthtext, 3) Binary und VarbinaryforBinaryData, 4) BloBandtextForLargedata und 5) Enumandforcontrolledinput

So erteilen Sie neue MySQL -Benutzer BerechtigungenSo erteilen Sie neue MySQL -Benutzer BerechtigungenMay 09, 2025 am 12:16 AM

TOGRANTREMMENTIONSTONEWMYSQLUSERS, folgt der THESESTEPS: 1) AccessMysqlasauser withSuffePrivileges, 2) CreateeNewuserwiththecreateuserCommand, 3) UsetheGrantcommandtospecifificpermissionSlikesSelect, Einfügung, orallprivileSontespezifizierungen, und orallprivileSonegierungen, und orallprivileSonegierungen, und orallprivileSonegierungen, und 4), orallprivileSONSONSONSONSONSORTIONALS, und4) und 4), und 4), und 4)), und 4), orallprivileSoneger

So fügen Sie Benutzer in MySQL hinzu: eine Schritt-für-Schritt-AnleitungSo fügen Sie Benutzer in MySQL hinzu: eine Schritt-für-Schritt-AnleitungMay 09, 2025 am 12:14 AM

Toaddusersinmysqleffektiv und secury, folge theSesteps: 1) UseTheCreatErStatementToaddanewuser, spezifizieren derHostandastrongPassword.2) GrantNeornyprivileGeSusingTheGrantstatement, AdheringTothprincipleastprivilege.3) implementssecurityMectoNityMeaSualslyLection

MySQL: Hinzufügen eines neuen Benutzers mit komplexen BerechtigungenMySQL: Hinzufügen eines neuen Benutzers mit komplexen BerechtigungenMay 09, 2025 am 12:09 AM

ToaddanewuserwithComplexPermissionssinmysql, folge theSeSteps: 1) CreateThEserWithCreatUser'newuser '@' localhost'IdentifiedBy'pa ssword ';. 2) GranTeadaccessToAlltablesin'myDatabase'withGrantSelectonMyDatabase.to'newuser'@'localhost';.

MySQL: String -Datentypen und KollationenMySQL: String -Datentypen und KollationenMay 09, 2025 am 12:08 AM

Die String -Datentypen in MySQL umfassen Zeichen, Varchar, Binär, Varbarin, Blob und Text. Die Kollationen bestimmen den Vergleich und die Sortierung von Saiten. 1.Ch ist für Zeichenfolgen mit fester Länge geeignet. Varchar ist für Zeichenfolgen variabler Länge geeignet. 2. Für Binärdaten werden immer wieder variäarisch verwendet, und Blob und Text werden für große Objektdaten verwendet. 3.. Sortierregeln wie UTF8MB4_unicode_ci ignoriert den oberen und unteren Fall und eignet sich für Benutzernamen. UTF8MB4_BIN ist fallempfindlich und für Felder geeignet, die einen genauen Vergleich erfordern.

MySQL: Welche Länge soll ich für Varchars verwenden?MySQL: Welche Länge soll ich für Varchars verwenden?May 09, 2025 am 12:06 AM

Die beste Auswahl der MySQLVarchar -Spaltenlänge sollte auf der Datenanalyse basieren, zukünftiges Wachstum berücksichtigen, die Leistungsauswirkungen bewerten und die Anforderungen an den Charaktersatz bewerten. 1) Analyse der Daten, um typische Längen zu bestimmen; 2) zukünftige Expansionsraum reservieren; 3) Auf die Auswirkungen großer Länge auf die Leistung achten; 4) Betrachten Sie die Auswirkungen von Zeichensätzen auf die Speicherung. Durch diese Schritte können die Effizienz und Skalierbarkeit der Datenbank optimiert werden.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor