Ingin tahu apakah mungkin untuk memilih sesuatu yang memiliki lebih / kurang dari x karakter dalam SQL.
Misalnya, saya memiliki tabel karyawan dan saya ingin menampilkan semua nama karyawan yang memiliki lebih dari 4 karakter dalam namanya.
Berikut adalah tabel contoh
ID EmpName Dept
1 Johnny ACC
2 Dan IT
3 Amriel PR
4 Amy HR
AND
pernyataan- misalnyaSELECT city FROM student.zipcode WHERE LENGTH(city) >= 4 AND LENGTH(city) <= 9;
JonH telah membahas dengan sangat baik bagian tentang bagaimana menulis query. Namun, ada masalah signifikan lain yang harus disebutkan juga, yang merupakan karakteristik kinerja kueri tersebut. Mari ulangi di sini (disesuaikan dengan Oracle):
Kueri ini membatasi hasil dari fungsi yang diterapkan ke nilai kolom (hasil penerapan
LENGTH
fungsi keEmployeeName
kolom). Di Oracle, dan mungkin di semua RDBMS lainnya, ini berarti indeks reguler pada EmployeeName tidak akan berguna untuk menjawab pertanyaan ini; database akan melakukan pemindaian tabel lengkap, yang bisa sangat mahal.Namun, berbagai database menawarkan fitur indeks fungsi yang dirancang untuk mempercepat kueri seperti ini. Misalnya, di Oracle, Anda dapat membuat indeks seperti ini:
Ini mungkin masih tidak membantu dalam kasus Anda, karena indeks mungkin tidak terlalu selektif untuk kondisi Anda. Maksud saya sebagai berikut: Anda meminta baris yang panjang namanya lebih dari 4. Mari kita asumsikan bahwa 80% dari nama karyawan dalam tabel itu lebih panjang dari 4. Nah, maka database kemungkinan akan menyimpulkan ( dengan benar) bahwa tidak ada gunanya menggunakan indeks, karena itu mungkin harus membaca sebagian besar blok dalam tabel.
Namun, jika Anda mengubah kueri menjadi
LENGTH(EmployeeName) <= 4
, atauLENGTH(EmployeeName) > 35
, dengan asumsi bahwa sangat sedikit karyawan yang memiliki nama kurang dari 5 karakter atau lebih dari 35, maka indeks akan dipilih dan meningkatkan kinerja.Singkatnya: waspadalah terhadap karakteristik kinerja kueri seperti yang Anda coba tulis.
sumber
Hari ini saya mencoba yang sama di db2 dan digunakan di bawah ini, dalam kasus saya, saya memiliki spasi di akhir data kolom varchar
sumber
Jika Anda mengalami masalah yang sama saat membuat kueri database DB2, Anda harus menggunakan kueri di bawah ini.
sumber