ANTARA di T-SQL - contoh penggunaan operator logika. Operator IN dan BETWEEN dalam SQL Sql antara contoh tanggal

Menentukan apakah nilai suatu ekspresi berada dalam rentang yang ditentukan. Operator ini dapat digunakan dalam pernyataan SQL.

Sintaksis

ekspresi [Bukan] Di antaranilai1Dannilai2

Sintaks operator Diantara dan mencakup komponen-komponen berikut:

Catatan

Jika nilai komponen ekspresi adalah antara nilai1 Dan nilai2(inklusif), operator Diantara dan mengembalikan nilai BENAR; jika tidak, nilainya akan dikembalikan PALSU. Mengaktifkan Operator Boolean Bukan menghasilkan pemeriksaan kondisi sebaliknya (dengan asumsi bahwa komponen ekspresi berada di luar rentang yang ditentukan oleh komponen nilai1 Dan nilai2).

Dengan menggunakan Antaran...Dan Anda dapat menentukan apakah nilai bidang berada dalam rentang numerik tertentu. Contoh di bawah ini menentukan apakah pesanan dikirim ke alamat dengan kode pos dalam rentang tertentu. Jika kode pos antara 98101 dan 98199, fungsinya SayaJika mengembalikan Lokal. Jika tidak, ia akan mengembalikan Nonlokal.

PILIH IIf (Kode Pos Antara 98101 dan 98199, “Lokal”, “Nonlokal”) DARI Penerbit

Jika ekspresi, nilai1 atau nilai2 memiliki nilai Null, Diantara dan mengembalikan nilai Batal.

Karena karakter wildcard, seperti tanda bintang (*), dianggap literal, maka karakter tersebut tidak dapat digunakan dalam pernyataan Diantara dan. Misalnya, Anda tidak dapat menggunakan ekspresi seperti 980* dan 989* untuk menemukan semua indeks yang dimulai dengan angka dalam rentang 980 hingga 989. Ada dua cara untuk menyelesaikan masalah ini. Anda dapat menambahkan ekspresi ke permintaan yang diteruskan ke operator Diantara dan tiga karakter pertama dari bidang teks. Opsi lainnya adalah menambahkan digit tambahan ke batas bawah dan atas interval yang diuji, dalam hal ini dari 98000 hingga 98999, atau dari 98000 hingga 98999-9999 jika menggunakan kode pos yang diperluas (kode pos yang lebih rendah harus dihilangkan -0000, jika tidak, akan ada indeks 98000 yang dilewati jika beberapa indeks memiliki ekstensi dan yang lainnya tidak).

Setiap permintaan yang dibuat untuk bekerja di database menyederhanakan akses ke informasi yang diperlukan. Pada postingan sebelumnya saya telah membahas tentang pernyataan kondisional yang umum. Dalam postingan yang sama ini, saya akan berbicara tentang operator yang memungkinkan Anda membuat kueri yang dapat memberikan informasi menarik lebih detail, yang, pada saat yang sama, tidak mudah ditemukan dengan kueri dengan operator AND, OR.
Salah satu operator khusus adalah DI DALAM. Operator ini memungkinkan Anda mengatur rentang yang diperlukan untuk menampilkan informasi yang diperlukan. Mari kita kembali ke data debitur

Debitur

Nomor Bulan Tahun Nama S Kota Alamat Utang
0001 Juli2012 IvanovStavropolStavropolskaya, 150000
0002 Desember2019 KononovTatarZagorodnaya, 254684068
0003 Mungkin2013 yamshinMikhailovskSelskaya, 48165840
0004 Agustus2012 PreneyStavropolPusat, 1646580
... ... ... ... ... ... ...
9564 Berbaris2015 UlievaDeminoInternasional, 156435089
9565 Oktober2012 PavlovaStavropolVokzalnaya, 3768059
9566 Januari2012 UryupaMikhailovskFontannaya, 1951238
9567 November2017 ValetovTatarVyezdnaya, 65789654

Misalkan Anda perlu memilih semua debitur kota Stavropol atau Tatarka. Dengan analogi dengan entri sebelumnya, Anda perlu menggunakan permintaan tersebut
PILIH *
DARI Debitur
DIMANA Kota = "Stavropol"
ATAU Kota = "Tatarka";

Pertama-tama, kode yang dihasilkan rumit. Dengan menggunakan operator khusus, Anda bisa mendapatkan kode yang lebih ringkas.
PILIH *
DARI Debitur
DI MANA Kota DI (“Stavropol”, “Tatarka”);

Hasilnya adalah

Mari ikuti logika programnya. Dengan kata kunci SELECT, FROM dan WHERE. Namun kemudian muncul operator IN. Ini menetapkan urutan tindakan pada program - Anda perlu melihat informasi database yang terdapat di kolom "Kota". Dan untuk menampilkannya Anda perlu memilih data "Stavropol" dan "Tatarka".
Izinkan saya memperhatikan sebuah contoh di mana Anda perlu membuat pilihan berdasarkan jumlah utang tertentu.
PILIH *
DARI Debitur
DI MANA Hutang DI (435089, 789654, 684068);

Hasilnya adalah sebagai berikut

Itu. operator IN memindai seluruh database untuk mengetahui keberadaan parameter pemilihan informasi yang ditentukan.
Situasinya berbeda dengan menggunakan operator khusus lainnya DI ANTARA. Jika operator DI DALAM mempertimbangkan informasi dengan parameter yang ditentukan secara eksklusif, kemudian operator DI ANTARA- antara rentang tertentu. Namun, analogi tidak boleh ditarik antara terjemahan bahasa Inggris dari operator ini dan tujuan sebenarnya. Jika Anda menentukan ANTARA 1 DAN 5, ini tidak berarti bahwa angka 2, 3 dan 4 akan benar.Operator ini hanya dianggap oleh SQL sebagai nilai tertentu yang dapat ditemukan di antara nilai-nilai lainnya. Sebagai contoh akan terlihat seperti ini.
PILIH *
DARI Debitur
DIMANA Hutang ANTARA 30000 DAN 100000;

Hasilnya adalah

Artinya, SQL menerima operator DI ANTARA sebagai nilai apa pun dalam rentang 30.000 hingga 100.000 di kolom "Utang".
Selain menentukan rentang perkiraan dalam bentuk numerik, Anda dapat menentukan rentang berdasarkan abjad, yang menampilkan informasi yang berisi huruf pertama dari rentang yang ditentukan. Namun ada satu hal menarik di sini. Mari buat permintaan berikut
PILIH *
DARI Debitur
DIMANA Nama ANTARA "I" DAN "P";

Kemudian akan ditampilkan data berikut

Sebuah pertanyaan logis: “Mengapa debitur dengan nama belakang P reni dan P Avlova? Lagi pula, huruf pertama dari nama keluarga mereka termasuk dalam rentang yang ditentukan!" Huruf-huruf tersebut disertakan, tetapi nama keluarga tidak. Hal ini disebabkan oleh fakta bahwa bahasa SQL dalam kueri semacam ini hanya menerima panjang pencarian string yang ditentukan. Dengan kata lain, panjang string "P" dalam kueri adalah satu karakter, dan panjang string "Preni" dan "Pavlova" dalam database masing-masing adalah lima dan tujuh. Namun nama belakang " DAN vanov" termasuk dalam rentang tersebut karena rentang dimulai dengan DAN, sebagai permulaan, panjangnya satu karakter.

Saat bekerja dengan DBMS relasional, di mana data disimpan dalam bentuk tabel, pengguna sering kali dihadapkan pada tugas memilih nilai yang termasuk (tidak termasuk) dalam rentang tertentu. Bahasa SQL memungkinkan Anda untuk menentukan kumpulan nilai yang seharusnya (tidak boleh) dimiliki menggunakan berbagai opsi - operator In, operator Suka, kombinasi kondisi lebih besar dari - kurang dari, serta operator SQL Antar. Deskripsi dan contoh dalam artikel ini akan fokus pada opsi terakhir.

Operator "Antara" dalam SQL: sintaksis, batasan

SQL antar operator secara harfiah diterjemahkan sebagai "antara". Penggunaannya memungkinkan Anda untuk menetapkan batasan “Dari dan Ke” pada bidang tertentu, dan jika nilai berikutnya berada dalam rentang tersebut, predikat akan mengambil nilai “Benar” dan nilai tersebut akan dimasukkan dalam pilihan akhir.

Sintaks operatornya sangat sederhana:

Dimana t1.n antara 0 dan 7

Seperti yang Anda lihat, setelah kata kunci antar Anda harus menentukan nilai batas bawah rentang, lalu AND dan nilai batas atas.

Mari kita daftar tipe data apa yang dapat digunakan oleh operator SQL:

  1. Dengan angka - bilangan bulat dan pecahan.
  2. Dengan tanggal.
  3. Dengan teks.

Antara operator SQL ini memiliki fitur tertentu. Mari kita mengenal mereka:

  1. Saat bekerja dengan angka dan tanggal, nilai batasan Dari dan Ke disertakan dalam pilihan.
  2. Nilai batas bawah rentang harus lebih kecil dari nilai batas atas, jika tidak maka tidak akan ada yang ditampilkan karena kondisi secara logika tidak valid. Anda harus sangat berhati-hati ketika variabel disertakan dalam kondisi, bukan nilai tertentu.

Saat bekerja dengan teks, nilai batas atas rentang tidak akan disertakan dalam pilihan kecuali jika ditentukan dengan sangat tepat. Di bagian berikut kami akan mempertimbangkan fitur ini secara lebih rinci.

Pemilihan nomor dan tanggal dalam rentang tertentu

Mari kita siapkan tabel dengan data manajer yang bekerja di organisasi. Tabel akan memiliki struktur berikut:

Nama bidang

Tipe data

Keterangan

Pengidentifikasi karyawan yang unik

Teks

Nama belakang karyawan

Teks

Nama karyawan

Nama belakang

Teks

Nama tengah karyawan

Teks

Jenis kelamin karyawan (L/P)

Tanggal penerimaan

Tanggal Waktu

Tanggal perekrutan karyawan

Jumlah anak

numerik

Jumlah anak yang dimiliki karyawan tersebut

Mari kita isi tabel dengan data berikut:

Kode

Nama belakang

Nama

Nama belakang

Lantai

Tanggal penerimaan

Jumlah anak

Alexandrova

Nikolaevna

Stepanovich

Vinogradov

Pavlovich

Alexander

Borisovich

Wisnyakov

Aleksandrovich

Tropnikov

Sergeevich

Zhemchugov

Vasilevich

Konstantinovna

Nikolaevich

Mari kita buat antara, yang akan membantu kita memilih semua karyawan yang memiliki 2 atau 3 anak:

Hasilnya adalah tiga baris data karyawan bernama Shumilin, Tropnikov dan Avdeeva.

Sekarang kami akan memilih karyawan yang dipekerjakan mulai 1 Januari 2005 hingga 31 Desember 2016. Perlu dicatat bahwa DBMS yang berbeda memungkinkan Anda menulis tanggal dalam kondisi yang berbeda. Dalam kebanyakan kasus, tanggal hanya dimasukkan ke dalam bentuk hari-bulan-tahun (atau apa pun yang lebih nyaman) dan ditulis dalam bentuk tunggal atau Dalam DBMS, tanggal diapit tanda “#”. Mari kita jalankan contoh berdasarkan hal tersebut:

PILIH Manajer.*, Manajer.Tanggal_Penerimaan

DARI Manajer

MANA Manajer. Tanggal penerimaan Antara #1/1/2005# dan #31/12/2016#

Hasilnya adalah lima karyawan yang dipekerjakan selama periode yang ditentukan inklusif.

Bekerja di sela-sela dengan string

Masalah yang sangat umum yang harus Anda pecahkan ketika bekerja dengan nama belakang karyawan adalah kebutuhan untuk memilih hanya mereka yang nama belakangnya dimulai dengan huruf tertentu. Mari kita coba penuhi permintaan tersebut dan pilih karyawan yang nama belakangnya diawali dengan nama belakang dari A sampai B:

Hasilnya adalah sebagai berikut:

Seperti yang Anda lihat, dua karyawan dengan nama belakang yang dimulai dengan huruf B tidak termasuk dalam daftar. Apa hubungannya ini? Intinya adalah bagaimana operator membandingkan string yang panjangnya tidak sama. Garis “B” lebih pendek dari garis “Vinogradov” dan diberi spasi. Namun saat mengurutkan berdasarkan abjad, spasi akan menjadi karakter utama, dan nama belakang tidak akan disertakan dalam pilihan. DBMS yang berbeda menawarkan cara yang berbeda untuk menyelesaikan masalah ini, namun seringkali cara termudah untuk amannya adalah dengan menentukan huruf alfabet berikut dalam rentang tersebut:

Saat menjalankan permintaan ini, hasilnya akan memuaskan kami sepenuhnya.

Nuansa ini hanya ada saat bekerja dengan data karakter, namun ini menunjukkan bahwa Anda perlu berhati-hati saat bekerja bahkan dengan operator sederhana seperti antara.

Membagikan