sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL Bitwise-operatorer med bitvarierende kan ikke OG bitstrenge af forskellig størrelse

Opførselen af ​​PostgreSQL bit og bit varying typer er yderst uhensigtsmæssigt, med den måde, den nægter at udvide bitfelter til operationer, og den udvider dem til højre for casts i stedet for at udvide dem til venstre.

Det ville give mening for Pg at venstre-forlænge den mindre operand med nuller før en OG- eller ELLER-operation, i stedet for at mislykkes.

Du kan ikke bruge en cast til bit(n) for at få samme længder, for af en eller anden sindssyg grund en cast til bit(n) højre puder argumentet, hvilket gør det ubrugeligt i næsten alle situationer.

Du kan bruge noget som lpad($1::text, greatest(length($1), length($2)),'0')::bit varying at venstre-udvide et bitfelt med nuller til den største af to længder. Det er besværligt, men det vil virke. Jeg vil anbefale at skrive indpakningsfunktioner for at indeholde rod.

Alternativt kan du overveje at ændre bit supportkode i src/backend/utils/adt/varbit.c at tilføje funktioner til venstre-udvidende og venstre-trunkeret bitfelter, og funktioner til at udføre venstre-udvidende sammenligninger. Det burde være ret nemt baseret på den eksisterende kode.



  1. Sådan registreres brugerformular med alle dynamiske felter navn i php

  2. Amazon Python 2.7 Lambda:DPI-1047:64-bit Oracle Client-bibliotek kan ikke indlæses:libclntsh.so

  3. SequelizeConnectionError:selvsigneret certifikat

  4. Sådan aktiverer du CDC på sæt af tabeller ELLER aktiverer på alle tabeller i en database i SQL Server - SQL Server Tutorial