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

mysql:mengapa membandingkan 'string' dengan 0 memberikan nilai true?

MySQL secara otomatis melemparkan string ke nomor:

SELECT '1string' = 0 AS res; -- res = 0 (false)
SELECT '1string' = 1 AS res; -- res = 1 (true)
SELECT '0string' = 0 AS res; -- res = 1 (true)

dan string yang tidak dimulai dengan angka dievaluasi sebagai 0:

SELECT 'string' = 0 AS res;  -- res = 1 (true)

Tentu saja, ketika kami mencoba membandingkan string dengan string lain, tidak ada konversi:

SELECT '0string' = 'string' AS res; -- res = 0 (false)

tetapi kita dapat memaksa konversi menggunakan, misalnya, operator +:

SELECT '0string' + 0 = 'string' AS res; -- res = 1 (true)

query terakhir mengembalikan TRUE karena kita menjumlahkan string '0string' dengan angka 0, sehingga string harus diubah menjadi angka, menjadi SELECT 0 + 0 = 'string' dan sekali lagi string 'string' diubah menjadi angka sebelum dibandingkan dengan 0, dan kemudian menjadi SELECT 0 = 0 yang BENAR.

Ini juga akan berfungsi:

SELECT '1abc' + '2ef' AS total; -- total = 1+2 = 3

dan akan mengembalikan jumlah string yang dikonversi ke angka (1 + 2 dalam kasus ini).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql pilih int sebagai mata uang atau konversi int ke format mata uang?

  2. MySQL:#126 - File kunci salah untuk tabel

  3. Masukkan Blob di database MySql dengan php

  4. Fungsi MySQL CEILING() – Membulatkan ke Integer Terdekat

  5. Cara Membuat Database di MySQL