Whoops. I was thinking about how I have my isbn table stored. ;) I prefer to remove all formatting from numbers like this(isbn, phone numbers, social security numbers, etc) before storing them. Anyway, here's something that should work. I'm not sure if it is the most efficient way to do this, but it works:

mysql> select * from t2;
+----------+
| isbn     |
+----------+
| 12345    |
| 123-45   |
| 123-4-5  |
| 123-4-56 |
| 123-4-57 |
| 123-4-58 |
| 123-3-58 |
| 123-3-58 |
+----------+
8 rows in set (0.00 sec)

mysql> select * from t2 where replace(isbn,'-','')=replace('1-2-3-4-5','-','');
+---------+
| isbn |
+---------+
| 12345 |
| 123-45 |
| 123-4-5 |
+---------+
3 rows in set (0.00 sec)


mysql>

Note that in my example, I had three entries with essentially the same isbn number, just formatted differently. This is basically the same idea as before except now we are replacing the '-' in the data in both the table and the user input string.

This seemed simpler than trying to first strip all of the '-' from the user string and then re-insert them in the right places. You can do this, but it's a lot clunkier and I wouldn't recommend it. If you are curious, the sql statement is:

mysql> select * from t2 where isbn=
   ->  concat(
   ->          substring(
   ->                  replace('1-2-3-4-5','-',''),
   ->                  1,
   ->                  3),
   ->          '-',
   ->          substring(
   ->                  replace('1-2-3-4-5','-',''),
   ->                  4,
   ->                  5)
   ->          );
+--------+
| isbn   |
+--------+
| 123-45 |
+--------+
1 row in set (0.01 sec)

What I did here as to first strip all of the '-' out of the user string, since we weren't sure where or if they were there. Then I rebuilt the string to match the pattern ###-## using concat and substring. As I said, this just seems far too clunky to deal with even if it does work.

Bob


-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to