Saya ingin menulis pernyataan SELECT yang hanya menggunakan satu pengujian untuk mengembalikan kolom tanpa nilai (null, kosong, atau semua spasi).
Saya pikir ini akan berhasil:
SELECT column_name from table_name WHERE column_name NOT LIKE '%_%';
Tetapi ini tidak berfungsi untuk nilai NULL.
Tentu saja bisa saya tambahkan
OR column_name IS NULL
dan itu akan berhasil, tapi saya ingin cara yang menggunakan satu pengujian.
Jawaban:
Secara fungsional, Anda harus bisa menggunakan
SELECT column_name FROM table_name WHERE TRIM(column_name) IS NULL
Masalahnya adalah indeks di COLUMN_NAME tidak akan digunakan. Anda harus memiliki indeks berbasis fungsi pada TRIM (nama_kolom) jika itu adalah kondisi selektif.
sumber
SELECT column_name from table_name WHERE RTRIM(ISNULL(column_name, '')) LIKE ''
ISNULL(column_name, '')
akan mengembalikan '' jika nama_kolom adalah NULL, jika tidak maka akan mengembalikan nama_kolom.MEMPERBARUI
Di Oracle, Anda dapat menggunakan
NVL
untuk mencapai hasil yang sama.SELECT column_name from table_name WHERE RTRIM(NVL(column_name, '')) LIKE ''
sumber
WHERE RTRIM(ISNULL(column_name, '')) LIKE ''
Fungsi NULLIF akan mengubah nilai kolom apa pun dengan hanya spasi menjadi nilai NULL. Berfungsi untuk T-SQL dan SQL Server 2008 & lebih tinggi.
SELECT [column_name] FROM [table_name] WHERE NULLIF([column_name], '') IS NULL
sumber
Saat memeriksa
null or Empty
nilai suatu kolom, saya melihat bahwa ada beberapa masalah dukungan di berbagai Database.Setiap Database tidak mendukung
TRIM
metode.Di bawah ini adalah matriks untuk memahami metode yang didukung oleh database yang berbeda.
Fungsi TRIM di SQL digunakan untuk menghapus prefiks atau sufiks tertentu dari string. Pola paling umum yang dihilangkan adalah spasi putih. Fungsi ini disebut berbeda di database yang berbeda:
TRIM(), RTRIM(), LTRIM()
RTRIM(), LTRIM()
TRIM(), RTRIM(), LTRIM()
Cara Memeriksa Kosong / Null / Whitespace: -
Sintaks untuk fungsi trim ini adalah:
Penggunaan Trim untuk memeriksa-
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
Penggunaan LTRIM & RTRIM untuk memeriksa-
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
Di atas kedua cara memberikan hasil yang sama, cukup gunakan berdasarkan dukungan DataBase Anda. Itu Hanya mengembalikan tabel
FirstName
fromUserDetails
jika ada yang kosongLastName
Berharap ini akan membantu orang lain juga :)
sumber
Kueri phpMyAdmin ini mengembalikan baris-baris itu, yang BUKAN null atau kosong atau hanya spasi:
SELECT * FROM `table_name` WHERE NOT ((`column_name` IS NULL) OR (TRIM(`column_name`) LIKE ''))
jika Anda ingin memilih baris yang null / kosong / hanya spasi, hapus saja TIDAK.
sumber
Gunakan kueri di bawah ini dan berhasil
SELECT column_name FROM table_name where isnull(column_name,'') <> ''
sumber
Apa yang saya gunakan
IsNotNullOrEmptyOrWhiteSpace
di T-SQL adalah:SELECT [column_name] FROM [table_name] WHERE LEN(RTRIM(ISNULL([column_name], ''))) > 0
sumber
Setiap orang menyarankan untuk menjalankan kueri di Oracle untuk menemukan catatan yang bidang spesifiknya kosong, (ini tidak termasuk (null) atau bidang lain hanya baris kosong) tidak berfungsi. Saya mencoba setiap kode yang disarankan. Sepertinya saya akan terus mencari secara online.
*****MEMPERBARUI*****
Saya mencoba ini dan berhasil, tidak yakin mengapa tidak akan berhasil jika <1 tetapi untuk beberapa alasan <2 bekerja dan hanya mengembalikan catatan yang bidangnya kosong
pilih [nama kolom] dari [nama tabel] di mana LENGTH (nama kolom) <2;
Saya menebak skrip apa pun yang digunakan untuk mengonversi data telah meninggalkan sesuatu di lapangan meskipun itu kosong, itulah tebakan saya mengapa <2 berfungsi tetapi tidak <1
Namun, jika Anda memiliki nilai lain di bidang kolom tersebut yang kurang dari dua karakter, maka Anda mungkin harus mencari solusi lain. Jika tidak banyak karakter lain, Anda dapat memilihnya.
Semoga solusi saya membantu orang lain di luar sana suatu hari nanti.
sumber
Seperti di Oracle Anda dapat menggunakan fungsi NVL di MySQL Anda dapat menggunakan IFNULL (columnaName, newValue) untuk mencapai hasil yang Anda inginkan seperti dalam contoh ini
SELECT column_name from table_name WHERE IFNULL(column_name,'') NOT LIKE '%_%';
sumber
Kamu dapat memakai
SELECT [column_name] FROM [table_name] WHERE [column_name] LIKE '% %' OR [column_name] IS NULL
sumber