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

Bagaimana pg_typeof() Bekerja di PostgreSQL

Di PostgreSQL, pg_typeof() fungsi memungkinkan Anda mendapatkan tipe data dari nilai apa pun.

Lebih khusus lagi, ini mengembalikan OID dari tipe data dari nilai yang diteruskan ke sana. Ini mengembalikan regtype , yang merupakan tipe alias OID. Oleh karena itu sama dengan OID untuk tujuan perbandingan tetapi ditampilkan sebagai nama jenis.

Sintaks

Fungsi tersebut memiliki sintaks berikut:

pg_typeof(any)

Dimana any adalah nilai apapun.

Contoh

Berikut adalah contoh dasar untuk didemonstrasikan.

SELECT pg_typeof(100);

Hasil:

integer

String Sewenang-wenang

Di Postgres, ada lebih dari satu jenis string (mis. char , varchar , text ). Oleh karena itu, Anda tidak bisa hanya mengapit argumen dalam tanda kutip tunggal dan berharap argumen tersebut mengetahui tipe datanya.

SELECT pg_typeof('Elephant'); 

Hasil:

unknown

Oleh karena itu, Anda harus menentukan tipe data aktualnya.

SELECT pg_typeof('Elephant'::varchar); 

Hasil:

character varying

Di Postgres, character varying adalah nama untuk varchar (sebenarnya, varchar adalah alias untuk character varying ).

Contoh terakhir ini agak berlebihan, karena saya secara eksplisit menyatakan tipe variabel, yang berarti bahwa saya sudah tahu seperti apa hasilnya.

Di dunia nyata, kemungkinan besar Anda akan mencoba mendapatkan tipe data dari suatu variabel.

Tipe Pengembalian Variabel

Dalam contoh ini, saya memasukkan string sebelumnya ke dalam variabel, lalu mendapatkan tipe datanya.

DO $$
DECLARE myString varchar(10) := 'Elephant';
BEGIN
 raise notice 'Value: % % Type: %', myString, E'\n', pg_typeof(myString);
END $$

Hasil:

NOTICE: Value: Elephant
Type: character varying

Ini dia lagi, kecuali bahwa saya mengubah tipe data ke tipe string yang berbeda (char(8) ).

DO $$
DECLARE myString char(8) := 'Elephant';
BEGIN
 raise notice 'Value: % % Type: %', myString, E'\n', pg_typeof(myString);
END $$

Hasil:

NOTICE: Value: Elephant
Type: character

Nilai Boolean

Berikut ini contoh pemberian nilai boolean secara eksplisit.

SELECT 
  pg_typeof(true),
  pg_typeof(false); 

Hasil:

 pg_typeof | pg_typeof
-----------+-----------
   boolean | boolean

Mengembalikan Jenis Fungsi

Sekali lagi, sepertinya Anda tidak akan secara eksplisit memberikan true atau false untuk fungsi ini. Kemungkinan besar itu berasal dari variabel.

Tapi Anda juga bisa menggunakan pg_typeof() untuk mengetahui tipe kembalian suatu fungsi.

Ini contohnya.

SELECT pg_typeof(isfinite(date '2020-07-18'));

Hasil:

boolean

Dalam hal ini saya melewati isfinite() fungsi ke pg_typeof() berfungsi sebagai argumennya.

Dan inilah contoh lain. Dalam hal ini saya mendapatkan tipe data dari nilai kembalian make_date() fungsi.

SELECT pg_typeof(make_date('1999', '09', '19')); 

Hasil:

date

Tipe Data Kolom

Berikut adalah contoh mengembalikan tipe data kolom database.

SELECT pg_typeof(last_update)
FROM actor
LIMIT 1;

Hasil:

timestamp without time zone

Dalam hal ini saya memeriksa tipe data actor.last_update kolom di pagila contoh basis data.

Mari kita periksa kolom lain:

SELECT pg_typeof(name)
FROM language
LIMIT 1;

Hasil:

character

Kolom ini ditampilkan sebagai bpchar di antarmuka saya, yang tampaknya merupakan nama tipe internal untuk CHAR(n) .

Omong-omong, Anda dapat menanyakan information_schema.columns untuk tipe data kolom.

Oleh karena itu, kita dapat menggunakan kueri berikut sebagai gantinya:

SELECT 
  column_name, 
  data_type 
FROM information_schema.columns
WHERE table_name = 'language';

Hasil:

 column_name |          data_type          
-------------+-----------------------------
 language_id | integer
 name        | character
 last_update | timestamp without time zone

Dalam hal ini saya mengembalikan tipe data untuk semua kolom dalam tabel.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat profil Database PostgreSQL?

  2. Dapatkan nilai paling umum untuk setiap nilai kolom lain di SQL

  3. Sederhanakan kasus bersarang saat pernyataan

  4. Cara menggunakan array_agg() untuk varchar[]

  5. Postgres - bagaimana cara mengembalikan baris dengan 0 hitungan untuk data yang hilang?