Apa jenis nilai BOOL dalam SQLite? Saya ingin menyimpan nilai nilai TRUE / FALSE di meja saya.
Saya bisa membuat kolom INTEGER dan menyimpannya bernilai 0 atau 1, tetapi itu bukan cara terbaik untuk mengimplementasikan tipe BOOL.
Apakah ada cara?
Terima kasih.
Jawaban:
Tidak ada tipe data boolean asli untuk SQLite. Per dokumen Datatypes :
sumber
Dalam SQLite yang terbaik yang dapat Anda lakukan adalah menggunakan bilangan bulat 0 dan 1 untuk mewakili false dan true. Anda dapat mendeklarasikan jenis kolom seperti ini:
Hapus
NOT NULL
jika Anda ingin memperbolehkanNULL
selain 0 dan 1.Penggunaan nama tipe di
BOOLEAN
sini adalah untuk keterbacaan, untuk SQLite itu hanya tipe dengan afinitas NUMERIC .Perhatikan bahwa PERIKSA kendala telah didukung sejak SQLite 3.3.0 (2006).
Berikut adalah beberapa contoh INSERT yang akan berfungsi: (perhatikan bagaimana string dan angka floating point diuraikan sebagai bilangan bulat)
dan beberapa yang akan gagal:
sumber
SQLite Boolean Datatype:
SQLite tidak memiliki kelas penyimpanan Boolean yang terpisah. Sebaliknya, nilai-nilai Boolean disimpan sebagai bilangan bulat 0 (salah) dan 1 (benar).
Anda dapat mengonversi boolean ke int dengan cara ini:
Anda dapat mengonversi int kembali ke boolean sebagai berikut:
Jika Anda ingin menjelajahi sqlite, berikut adalah tutorialnya .
Saya telah memberikan satu jawaban di sini . Ini bekerja untuk mereka.
sumber
Boolean flag2 = (intValue != 0);
menggunakan tipe data Integer dengan nilai 0 dan 1 adalah yang tercepat.
sumber
Selanjutnya jawaban ericwa. PERIKSA kendala dapat mengaktifkan kolom pseudo boolean dengan memberlakukan tipe data TEXT dan hanya mengizinkan nilai spesifik kasus yang BENAR atau SALAH misalnya.
sumber
Tetapi, jika Anda ingin menyimpan banyak dari mereka, Anda bisa menggeser-gesernya dan menyimpan semuanya sebagai satu int, sedikit seperti izin / mode unix file.
Untuk mode 755 misalnya, setiap digit mengacu pada kelas pengguna yang berbeda: pemilik, grup, publik. Dalam setiap digit 4 dibaca, 2 adalah tulis, 1 dijalankan jadi 7 semuanya seperti biner 111. 5 dibaca dan dijalankan 101. Buat skema penyandian Anda sendiri.
Saya hanya menulis sesuatu untuk menyimpan data jadwal TV dari Jadwal Langsung dan saya memiliki bidang biner atau ya / tidak: stereo, hdtv, baru, ei, teks tertutup, dolby, getah dalam bahasa Spanyol, premier musim. Jadi 7 bit, atau integer dengan maksimal 127. Satu karakter banget.
Contoh AC dari apa yang saya kerjakan sekarang. has () adalah fungsi yang mengembalikan 1 jika string ke-2 ada di yang pertama. inp adalah string input untuk fungsi ini. misc adalah karakter unsigned yang diinisialisasi ke 0.
Jadi saya menyimpan 7 boolean dalam satu bilangan bulat dengan ruang lebih banyak.
sumber
Anda dapat menyederhanakan persamaan di atas menggunakan yang berikut:
Jika representasi int (sqlInt) dari boolean adalah 0 (false), boolean (flag) akan salah, jika tidak maka akan benar.
Kode ringkas selalu lebih baik untuk digunakan :)
sumber
Cara lain untuk melakukannya adalah kolom TEXT. Dan kemudian mengonversi nilai boolean antara Boolean dan String sebelum / sesudah menyimpan / membaca nilai dari database.
Ex. Kamu memiliki
"boolValue = true;
"Ke String:
Dan kembali ke boolean:
sumber