> We have a database that has one particular table, searchdata, that has
> the
> following columns
>
> BINARY key_low(5)
> BINARY key_high(5)
> VARCHAR searchss(255)
>
> The following query, when the SET QUERY UTF8 option is present,
> doesn't work
> because MySQL encodes the binary field.
> Any ideas how we get around this?
> We're running 4.1.5a gamma and the table encoding is set to utf8.
>
> SELECT searchsss FROM searchdata WHERE '$D6@/' BETWEEN key_low AND
> key_high;
I'm not sure I understand the problem. By "SET QUERY utf8" do you mean
"SET NAMES utf8"? I couldn't find "SET QUERY" in the manual. The
following seems to work correctly to me:
SET NAMES utf8;
CREATE TABLE t (key_low tinyblob, key_high tinyblob, searchss
VARCHAR(255));
INSERT INTO t VALUES ('aaa', 'ccc', 'str1'),('AAA', 'CCC', 'str2');
SELECT searchss FROM t WHERE 'bbb' BETWEEN key_low AND key_high;
+----------+
| searchss |
+----------+
| str1 |
+----------+
1 row in set (0.00 sec)
Isn't this what you want? A binary comparison? To get a
case-insensitive comparison use the following:
SELECT searchss FROM t WHERE 'bbb' COLLATE utf8_unicode_ci BETWEEN
key_low AND key_high;
+----------+
| searchss |
+----------+
| str1 |
| str2 |
+----------+
2 rows in set (0.00 sec)
Or is there more that I don't understand?
best regards,
Jeremy
>
> Kevin Cowley
> R&D
>
> Tel: 0118 902 9099 (direct line)
> Email: [EMAIL PROTECTED]
> Web: http://www.alchemetrics.co.uk
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]