Mega Code Archive

 
Categories / MySQL / String
 

A pattern match against a binary column is case sensitive

mysql> mysql> CREATE TABLE mytable     -> (     ->  name    VARCHAR(20)     -> ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO mytable (name)     ->  VALUES     ->          ('copper'),     ->          ('gold'),     ->          ('iron'),     ->          ('lead'),     ->          ('mercury'),     ->          ('platinum'),     ->          ('silver'),     ->          ('tin')     -> ; Query OK, 8 rows affected (0.00 sec) Records: 8  Duplicates: 0  Warnings: 0 mysql> mysql> SELECT * FROM mytable; +----------+ | name     | +----------+ | copper   | | gold     | | iron     | | lead     | | mercury  | | platinum | | silver   | | tin      | +----------+ 8 rows in set (0.00 sec) mysql> mysql> ALTER TABLE mytable ADD binname VARCHAR(20) BINARY; Query OK, 8 rows affected (0.01 sec) Records: 8  Duplicates: 0  Warnings: 0 mysql> mysql> UPDATE mytable SET binname = name; Query OK, 8 rows affected (0.00 sec) Rows matched: 8  Changed: 8  Warnings: 0 mysql> mysql> SELECT binname, binname LIKE '%I%', binname REGEXP 'I' FROM mytable; +----------+--------------------+--------------------+ | binname  | binname LIKE '%I%' | binname REGEXP 'I' | +----------+--------------------+--------------------+ | copper   |                  0 |                  0 | | gold     |                  0 |                  0 | | iron     |                  0 |                  0 | | lead     |                  0 |                  0 | | mercury  |                  0 |                  0 | | platinum |                  0 |                  0 | | silver   |                  0 |                  0 | | tin      |                  0 |                  0 | +----------+--------------------+--------------------+ 8 rows in set (0.00 sec) mysql> SELECT binname, UPPER(binname) LIKE '%I%', UPPER(binname) REGEXP 'I' FROM mytable; +----------+---------------------------+---------------------------+ | binname  | UPPER(binname) LIKE '%I%' | UPPER(binname) REGEXP 'I' | +----------+---------------------------+---------------------------+ | copper   |                         0 |                         0 | | gold     |                         0 |                         0 | | iron     |                         1 |                         1 | | lead     |                         0 |                         0 | | mercury  |                         0 |                         0 | | platinum |                         1 |                         1 | | silver   |                         1 |                         1 | | tin      |                         1 |                         1 | +----------+---------------------------+---------------------------+ 8 rows in set (0.00 sec) mysql> mysql> drop table mytable; Query OK, 0 rows affected (0.00 sec) mysql>