sobota, 17 marca 2012

Mysql Case Binary

Today I've discovered how usefull can be binary operator ;)
I will show how to use it, with 'case' operator.
The main difference between normal case and binary is that Case binary check the binary value of argument.
Let's see that on exaples:
mysql> SELECT CASE  'A'  WHEN 'a' THEN 1 WHEN 'A' THEN 2 END;
+------------------------------------------------+
| CASE  'A'  WHEN 'a' THEN 1 WHEN 'A' THEN 2 END |
+------------------------------------------------+
|                                              1 | 
+------------------------------------------------+

mysql> SELECT CASE BINARY 'A'  WHEN 'a' THEN 1 WHEN 'A' THEN 2 END;
+------------------------------------------------------+
| CASE BINARY 'A'  WHEN 'a' THEN 1 WHEN 'A' THEN 2 END |
+------------------------------------------------------+
|                                                    2 | 
+------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CASE  'HoMe'  WHEN 'HOME' THEN 1 WHEN 'HoMe' THEN 2 END;
+---------------------------------------------------------+
| CASE  'HoMe'  WHEN 'HOME' THEN 1 WHEN 'HoMe' THEN 2 END |
+---------------------------------------------------------+
|                                                       1 | 
+---------------------------------------------------------+
1 row in set (0.01 sec)

mysql> SELECT CASE BINARY 'HoMe'  WHEN 'HOME' THEN 1 WHEN 'HoMe' THEN 2 END;
+---------------------------------------------------------------+
| CASE BINARY 'HoMe'  WHEN 'HOME' THEN 1 WHEN 'HoMe' THEN 2 END |
+---------------------------------------------------------------+
|                                                             2 | 
+---------------------------------------------------------------+
1 row in set (0.00 sec)
So as you can see, no need to apply addition lower() and upper() function to compare strings.
If you wanna learn something more about binary operator see manual
http://dev.mysql.com/doc/refman/5.0/en/charset-binary-op.html

niedziela, 11 marca 2012

mysq dual table

Did you know that there is 'dual' table in mysql ?

mysql> select 1+1 from dual;
+-----+
| 1+1 |
+-----+
|   2 |
+-----+
1 row in set (0.00 sec)
I'm shocked : )