PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Преобразуване на типа. Какво да направя със стойност на PostgreSQL OID в libpq в C?

Намерих отговора след като попитах това. По принцип има файл, наречен catalog/pg_type.h, заедно с libpq-fe.h и postgres.h. Трябва да включите след като включите libpq-fe.h и postgres.h, след което можете да получите достъп до дефинициите като TEXTOID , BOOLOID , INT4OID и др.

#include <stdio.h>
#include <postgres.h>
#include <libpq-fe.h>
#include <catalog/pg_type.h>

// ... snip ...

if (PQgetisnull(result, row, col)) {
  // value is NULL, nothing more to do
} else {
  char * value  = PQgetvalue(result, row, col);
  int    length = PQgetlength(result, row, col);

  switch (PQftype(result, col)) {
    case INT2OID:
    case INT4OID:
    case INT8OID:
      // process value as an integer
      break;

    default:
      // just default to a text representation
  }
}

Трябва да разгледате всички OID в pg_type.h, за да имате действително обширен списък, или просто да тествате какво получавате, като правите основно SELECT 't'::boolean тип заявки и т.н. и изградете превключвателя само когато имате нужда от нов тип, поддържащ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА в PostgreSQL:функция to_tsvector(променлив знак, неизвестен) не съществува

  2. Съхранение на изображения в PostgreSQL

  3. Postgres ръчно променя последователността

  4. Как да премахнете последващите нули от десетичен знак в PostgreSQL

  5. CONSTRAINT за проверка на стойности от отдалечено свързана таблица (чрез присъединяване и т.н.)