For those of you watching but still not getting his point: He is saying 
that QUOTE() improperly escapes a string where a \ and a ' appear together 
in the unquoted text. the sequence \' should look like \\\' when 
QUOTE()-ed. It should escape \ as \\ and ' as \'.    \\+\' = \\\' . 
QUOTE() seems to be leaving out the 3rd \.

http://dev.mysql.com/doc/mysql/en/string-syntax.html

Thomas, I think you should file a bug report on this. That way they FIX 
the QUOTE() function. No middle-ground needed.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine


[EMAIL PROTECTED] wrote on 03/17/2005 09:14:29 AM:

> Hi everyone,
> 
> I'm following up on my own question. There appears to be a bug in the 
way
> how QUOTE() interacts with the mysql client.
> 
> Using --raw mode can apparently solve the problem reported in my 
original
> post:
> 
> shell> mysql --raw -N -B -e "SELECT QUOTE(sometext) FROM foo;" test
> 'Pitt\'s Place'
> 
> That seems about right, but it doesn't solve the whole problem. Consider
> this:
> 
> shell> mysql -e "INSERT INTO foo VALUES('Joe\'s place\tthat\'s nice');" 
test
> 
> (note: there is a <TAB> between 'place' and 'that')
> 
> Let's retrieve this from the db, with and without --raw:
> 
> shell> mysql --raw -N -B -e "SELECT QUOTE(sometext) FROM foo;" test
> 'Joe\'s place   that\'s nice'
> 
> shell> mysql -N -B -e "SELECT QUOTE(sometext) FROM foo;" test
> 'Joe\\'s place\tthat\\'s nice'
> 
> None of those results can be re-inserted as is. The only possibility to
> fix this would probably be to add a new option (how about --medium-raw 
?)
> to the mysql client. All else would break existing scripts.
> 
> Thomas Spahni
> 
> 
> On Tue, 15 Mar 2005, Thomas Spahni wrote:
> 
> > Dear list,
> >
> > I don't understand what happens here:
> >
> > shell> mysql -N -e "SHOW VARIABLES LIKE 'version';" test
> > +---------+------------+
> > | version | 4.0.14-log |
> > +---------+------------+
> >
> > shell> mysql -e "CREATE TABLE foo (sometext VARCHAR(255));" test
> > shell> mysql -e "INSERT INTO foo VALUES('Pitt\\'s Place');" test
> > shell> mysql -N -e "SELECT QUOTE(sometext) FROM foo;" test
> > +-----------------+
> > | 'Pitt\'s Place' |
> > +-----------------+
> >
> > So far so good; exactly what I would expect. The string is nicely 
escaped
> > with ONE backslash. But now, look at this:
> >
> > shell> mysql -N -B -e "SELECT QUOTE(sometext) FROM foo;" test
> > 'Pitt\\'s Place'
> >
> > Double backslash in batch mode. Same result if I pipe the query into
> > mysql. Why? This can't be fed into any INSERT query. Bug or feature?
> >
> > Any comments from the list are very welcome.
> >
> > Thomas Spahni
> 
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> 

Reply via email to