Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jakie jest znaczenie wybierz „-”

Jesteś minus - z jednego pustego ciągu '' do innych:

Zobacz następujące:

mysql> select '';
+--+
|  |
+--+
|  |
+--+
1 row in set (0.00 sec)  

mysql> select '3'-'2';
+---------+
| '3'-'2' |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)

Ale ostrzeżenie, jeśli nie jest to ciąg liczbowy :

mysql> select 'a'-'b';
+---------+
| 'a'-'b' |
+---------+
|       0 |
+---------+
1 row in set, 2 warnings (0.00 sec)    

Dwa ostrzeżenia:

mysql> SHOW WARNINGS LIMIT 2
    -> ;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'b' |
+---------+------+---------------------------------------+
2 rows in set (0.00 sec)  

Dlaczego nie ma ostrzeżenia o empty ciąg?

Gdzie, ponieważ nie ma ostrzeżenia o pustym łańcuchu, ponieważ jest to (rzucane coś) 0 patrz poniżej:

mysql> SELECT 0 = '';
+--------+
| 0 = '' |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)   

stąd wykonując ''-'' robisz 0 - 0

mysql> SELECT '' - '';
+---------+
| '' - '' |
+---------+
|       0 |
+---------+
1 row in set (0.00 sec)  

Aby było bardziej jasne, dodaję następujący przykład (czuję, że będzie dla Ciebie pomocny ):
Jak dochodzi do konwersji:

mysql> SELECT '0' = 0
    -> ;
+---------+
| '0' = 0 |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)  

zwróć uwagę na jego konwersję:

mysql> SELECT '' = '0'
    -> ;
+----------+
| '' = '0' |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)  

'' konwertowane na 0 , '0' konwertowane na 0 ale '' nie równa się '0'

mysql> SELECT '1' = 1
    -> ;
+---------+
| '1' = 1 |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)

mysql> SELECT '' = 1
    -> ;
+--------+
| '' = 1 |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec) 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupa Mysql W odstępach 24-godzinnych

  2. Użyj pełnego kalendarza bez daty

  3. jak napisać wyrażenia regularne w zapytaniach wybierających MySQL?

  4. Jak przekonwertować format daty csv na mysql db

  5. Wydajność operatora MySQL IN na (dużej?) liczbie wartości