sql >> Databáze >  >> RDS >> Mysql

co znamená vybrat ''-''

Jste mínus - z jednoho prázdného řetězce '' na jiné:

Viz následující:

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

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

Ale varování, pokud to není číselný řetězec :

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

Dvě varování:

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)  

Proč žádné upozornění na empty řetězec?

Kde jako neexistuje žádné varování pro prázdný řetězec, protože jeho (něco přetypováno) 0 viz níže:

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

tedy provedením ''-'' děláte 0 - 0

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

Aby to bylo jasnější, přidávám následující příklad (Mám pocit, že vám to pomůže ):
Jak ke konverzi dochází:

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

všimněte si jeho konverze:

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

'' převedeny na 0 , '0' převedeny na 0 ale '' nerovná se '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. ASP.Net / MySQL :Překlad obsahu do několika jazyků

  2. SQL Server na Linuxu

  3. Ukládání dat:REST vs. POSIX pro archivy a HSM

  4. Chybová zpráva Neukončený řetězcový literál