PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Konversi jenis. Apa yang harus saya lakukan dengan nilai OID PostgreSQL di libpq di C?

Saya menemukan jawabannya setelah menanyakan ini. Pada dasarnya ada file bernama catalog/pg_type.h, di samping libpq-fe.h dan postgres.h. Anda perlu memasukkan setelah memasukkan libpq-fe.h dan postgres.h, maka Anda dapat mengakses definisi seperti TEXTOID , BOOLOID , INT4OID dll.

#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
  }
}

Anda perlu melihat semua OID di pg_type.h untuk benar-benar memiliki daftar yang ekstensif, atau hanya menguji apa yang Anda dapatkan kembali dengan melakukan SELECT 't'::boolean dasar ketik kueri dll dan buat sakelar hanya jika Anda memerlukan jenis pendukung baru.



  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 'PDOException' dengan pesan 'tidak dapat menemukan driver'

  2. Perbedaan antara tipe data DECIMAL dan NUMERIC di PSQL

  3. Mendeteksi Apakah Nilai Berisi Setidaknya Satu Digit Numerik di PostgreSQL

  4. PostgreSQL, kueri kompleks untuk menghitung bahan berdasarkan resep

  5. Apa yang setara dengan PostgreSQL untuk ISNULL()