Copyright (C) 2000-2012 |
GNU Info (mysql.info)VariablesUser Variables -------------- MySQL supports thread-specific variables with the `@variablename' syntax. A variable name may consist of alphanumeric characters from the current character set and also `_', `$', and `.' . The default character set is ISO-8859-1 Latin1; this may be changed with the `--default-character-set' option to `mysqld'. Note: Character sets. Variables don't have to be initialized. They contain `NULL' by default and can store an integer, real, or string value. All variables for a thread are automatically freed when the thread exits. You can set a variable with the `SET' syntax: SET @variable= { integer expression | real expression | string expression } [,@variable= ...]. You can also set a variable in an expression with the `@variable:=expr' syntax: select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3; +----------------------+------+------+------+ | @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 | +----------------------+------+------+------+ | 5 | 5 | 1 | 4 | +----------------------+------+------+------+ (We had to use the `:=' syntax here, because `=' was reserved for comparisons.) User variables may be used where expressions are allowed. Note that this does not currently include use in contexts where a number is explicitly required, such as in the `LIMIT' clause of a `SELECT' statement, or the `IGNORE number LINES' clause of a `LOAD DATA' statement. *NOTE:* In a `SELECT' statement, each expression is only evaluated when it's sent to the client. This means that in the `HAVING', `GROUP BY', or `ORDER BY' clause, you can't refer to an expression that involves variables that are set in the `SELECT' part. For example, the following statement will NOT work as expected: SELECT (@aa:=id) AS a, (@aa+3) AS b FROM table_name HAVING b=5; The reason is that `@aa' will not contain the value of the current row, but the value of `id' for the previous accepted row.
automatically generated by info2www version 1.2.2.9 |