Hello.

On Mon, Apr 08, 2002 at 11:24:56AM -0400, [EMAIL PROTECTED] wrote:
[...]
> still...I wonder why I got a 'Query OK, 1 row affected' message....
[...]
> > insert into table (key, field) values (1, 'test'||CHAR(59)||' string');
> > 
> > it seems to work initially...(Query OK, 1 row affected (0.00 sec))
> > but when I try to select the value of the field I get just the
> > value '0' (string of zero).
[...]

That's because it is a valid expression. In the context of ||, 'test'
will be converted to a number. Same for CHAR(59) which returns a
string:

mysql> SELECT 'test' + 0, 'test' || 0, CHAR(59) || 0, VERSION();
+------------+-------------+---------------+-------------------+
| 'test' + 0 | 'test' || 0 | CHAR(59) || 0 | VERSION()         |
+------------+-------------+---------------+-------------------+
|          0 |           0 |             0 | 3.23.42-debug-log |
+------------+-------------+---------------+-------------------+
1 row in set (0.00 sec)

ORing the expressions with || results in a boolean value which is
represented by 1 (true) or 0 (false) respectively. So your insert

INSERT INTO table1 (key, field) VALUES (1, 'test'||CHAR(59)||' string')

statement boils down to

INSERT INTO table1 (key, field) VALUES (1, 0)

which is perfectly valid.

Well, with some other strings, you could get even a 1 as result :-)

mysql> SELECT '21test' || 0, CHAR(53) || 0;
+---------------+---------------+
| '12test' || 0 | CHAR(53) || 0 |
+---------------+---------------+
|             1 |             1 |
+---------------+---------------+
1 row in set (0.00 sec)

Bye,

        Benjamin.


-- 
[EMAIL PROTECTED]

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to