Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL SELECT saja bukan nilai nol

Anda harus menggunakan IS NOT NULL . (Operator pembanding = dan <> keduanya memberikan UNKNOWN dengan NULL di kedua sisi ekspresi.)

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

Hanya untuk kelengkapan saya akan menyebutkan bahwa di MySQL Anda juga dapat meniadakan operator kesetaraan aman nol tapi ini bukan SQL standar.

SELECT *
FROM table 
WHERE NOT (YourColumn <=> NULL);

Diedit untuk mencerminkan komentar. Kedengarannya seperti tabel Anda mungkin tidak dalam bentuk normal pertama dalam hal ini mengubah struktur dapat membuat tugas Anda lebih mudah. Beberapa cara lain untuk melakukannya...

SELECT val1 AS val
FROM  your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2 
FROM  your_table
WHERE val2 IS NOT NULL
/*And so on for all your columns*/

Kerugian dari hal di atas adalah memindai tabel beberapa kali sekali untuk setiap kolom. Itu mungkin dapat dihindari dengan cara di bawah ini, tetapi saya belum mengujinya di MySQL.

SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM   your_table
        /*CROSS JOIN*/
       JOIN (SELECT 1 AS idx
                   UNION ALL
                   SELECT 2) t
HAVING val IS NOT NULL  /*Can reference alias in Having in MySQL*/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan MySql dengan Entity Framework 4 dan Code-First Development CTP

  2. Ubah karakter latin1 pada tabel UTF8 menjadi UTF8

  3. Pencarian Teks Lengkap dengan InnoDB

  4. TEMUKAN_IN_SET() vs IN()

  5. Bagaimana saya bisa mempercepat kueri MySQL dengan offset besar di klausa LIMIT?