mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
a8a757c6bb
and collateral changes. * introduce my_hrtime_t, my_timediff_t, and conversion macros * inroduce TIME_RESULT, but it can only be returned from Item::cmp_type(), never from Item::result_type() * pack_time/unpack_time function for "packed" representation of MYSQL_TIME in a longlong that can be compared * ADDTIME()/SUBTIME()/+- INTERVAL now work with TIME values * numbers aren't quoted in EXPLAIN EXTENDED * new column I_S.COLUMNS.DATETIME_PRECISION * date/time values are compares to anything as date/time, not as strings or numbers. * old timestamp(X) is no longer supported * MYSQL_TIME to string conversion functions take precision as an argument * unified the warnings from Field_timestamp/datetime/time/date/newdate store methods * Field_timestamp_hires, Field_datetime_hires, Field_time_hires * Field_temporal * Lazy_string class to pass a value (string, number, time) polymorphically down the stack * make_truncated_value_warning and Field::set_datetime_warning use Lazy_string as an argument, removed char*/int/double variants * removed Field::can_be_compared_as_longlong(). Use Field::cmp_type() == INT_RESULT instead * introduced Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong() * in many cases date/time types are treated like other types, not as special cases * greatly simplified Arg_comparator (regarding date/time/year code) * SEC_TO_TIME is real function, not integer. * microsecond precision in NOW, CURTIME, etc * Item_temporal. All items derived from it only provide get_date, but no val* methods * replication of NOW(6) * Protocol::store(time) now takes the precision as an argument * @@TIMESTAMP is a double client/mysqlbinlog.cc: remove unneded casts include/my_sys.h: introduce my_hrtime_t, my_timediff_t, and conversion macros include/my_time.h: pack_time/unpack_time, etc. convenience functions to work with MYSQL_TIME::second_part libmysql/libmysql.c: str_to_time() is gone. str_to_datetime() does it now. my_TIME_to_str() takes the precision as an argument mysql-test/include/ps_conv.inc: time is not equal to datetime anymore mysql-test/r/distinct.result: a test for an old MySQL bug mysql-test/r/explain.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/func_default.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/func_sapdb.result: when decimals=NOT_FIXED_DEC it means "not fixed" indeed mysql-test/r/func_test.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/func_time.result: ADDTIME()/SUBTIME()/+- INTERVAL now work with TIME values mysql-test/r/having.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/information_schema.result: new column I_S.COLUMNS.DATETIME_PRECISION mysql-test/r/join_outer.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/metadata.result: TIMESTAMP no longer has zerofill flag mysql-test/r/range.result: invalid datetime is not compared with as a string mysql-test/r/select.result: NO_ZERO_IN_DATE, etc only affect storage - according to the manual numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/subselect.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/sysdate_is_now.result: when decimals=NOT_FIXED_DEC it means "not fixed" indeed mysql-test/r/type_blob.result: TIMESTAMP(N) is not deprecated mysql-test/r/type_timestamp.result: old TIMESTAMP(X) semantics is not supported anymore mysql-test/r/union.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/r/varbinary.result: numbers aren't quoted in EXPLAIN EXTENDED mysql-test/t/distinct.test: test for an old MySQL bug mysql-test/t/func_time.test: +- INTERVAL now works with TIME values mysql-test/t/select.test: typo mysql-test/t/subselect.test: only one error per statement, please mysql-test/t/system_mysql_db_fix40123.test: old timestamp(X) is no longer supported mysql-test/t/system_mysql_db_fix50030.test: old timestamp(X) is no longer supported mysql-test/t/system_mysql_db_fix50117.test: old timestamp(X) is no longer supported mysql-test/t/type_blob.test: old timestamp(X) is no longer supported mysql-test/t/type_timestamp.test: old timestamp(X) is no longer supported mysys/my_getsystime.c: functions to get the time with microsecond precision mysys/my_init.c: move the my_getsystime.c initialization code to my_getsystime.c mysys/my_static.c: no need to make these variables extern mysys/my_static.h: no need to make these variables extern scripts/mysql_system_tables.sql: old timestamp(X) is no longer supported scripts/mysql_system_tables_fix.sql: old timestamp(X) is no longer supported scripts/mysqlhotcopy.sh: old timestamp(X) is no longer supported sql-common/my_time.c: * call str_to_time from str_to_datetime, as appropriate * date/time to string conversions take precision as an argument * number_to_time() * TIME_to_double() * pack_time() and unpack_time() sql/event_data_objects.cc: cast is not needed my_datetime_to_str() takes precision as an argument sql/event_db_repository.cc: avoid dangerous downcast (because the pointer is not always Field_timestamp, see events_1.test) sql/event_queue.cc: avoid silly double-work for cond_wait (having an endpoint of wait, subtract the current time to get the timeout, and use set_timespec() macro to fill in struct timespec, by adding the current time to the timeout) sql/field.cc: * remove virtual Field::get_time(), everyone should use only Field::get_date() * remove lots of #ifdef WORDS_BIGENDIAN * unified the warnings from Field_timestamp/datetime/time/date/newdate store methods * Field_timestamp_hires, Field_datetime_hires, Field_time_hires * Field_temporal * make_truncated_value_warning and Field::set_datetime_warning use Lazy_string as an argument, removed char*/int/double variants sql/field.h: * remove virtual Field::get_time(), everyone should use only Field::get_date() * remove lots of #ifdef WORDS_BIGENDIAN * unified the warnings from Field_timestamp/datetime/time/date/newdate store methods * Field_timestamp_hires, Field_datetime_hires, Field_time_hires * Field_temporal * make_truncated_value_warning and Field::set_datetime_warning use Lazy_string as an argument, removed char*/int/double variants * removed Field::can_be_compared_as_longlong(). Use Field::cmp_type() == INT_RESULT instead sql/filesort.cc: TIME_RESULT, cmp_time() sql/item.cc: * numbers aren't quoted in EXPLAIN EXTENDED * Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong() * virtual Item::get_time() is gone * Item_param::field_type() is set correctly * Item_datetime, for a datetime constant * time to anything is compared as a time * Item_cache::print() prints the value is available * bug fixed in Item_cache_int::val_str() sql/item.h: * Item::print_value(), to be used from Item_xxx::print() when needed * Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong() * virtual Item::get_time() is gone * Item_datetime, for a datetime constant * better default for cast_to_int_type() * Item_cache objects now *always* have the field_type() set sql/item_cmpfunc.cc: * get_year_value, get_time_value are gone. get_datetime_value does it all * get_value_a_func, get_value_b_func are gone * can_compare_as_dates() is gone too, TIME_RESULT is used instead * cmp_type() instead or result_type() when doing a comparison * compare_datetime and compate_e_datetime in the comparator_matrix, is_nulls_eq is gone * Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong() sql/item_cmpfunc.h: greatly simplified Arg_comparator sql/item_create.cc: * fix a bug in error messages in CAST sql/item_func.cc: Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong() mention all possibitiles in switch over Item_result values, or use default: sql/item_row.h: overwrite the default cmp_type() for Item_row, as no MYSQL_TYPE_xxx value corresponds to ROW_RESULT sql/item_timefunc.cc: rewrite make_datetime to support precision argument SEC_TO_TIME is real function, not integer. many functions that returned temporal values had duplicate code in val_* methods, some of them did not have get_date() which resulted in unnecessary date->str->date conversions. Now they all are derived from Item_temporal_func and *only* provide get_date, not val* methods. many fixes to set decimals (datetime precision) correctly. sql/item_timefunc.h: SEC_TO_TIME is real function, not integer. many functions that returned temporal values had duplicate code in val_* methods, some of them did not have get_date() which resulted in unnecessary date->str->date conversions. Now they all are derived from Item_temporal_func and *only* provide get_date, not val* methods. many fixes to set decimals (datetime precision) correctly. sql/log_event.cc: replication of NOW(6) sql/log_event.h: replication of NOW(6) sql/mysql_priv.h: Lazy_string class to pass a value (string, number, time) polymorphically down the stack. make_truncated_value_warning() that uses it. sql/mysqld.cc: datetime in Arg_comparator::comparator_matrix sql/opt_range.cc: cleanup: don't disable warnings before calling save_in_field_no_warnings() sql/protocol.cc: Protocol::store(time) now takes the precision as an argument sql/protocol.h: Protocol::store(time) now takes the precision as an argument sql/rpl_rli.cc: small cleanup sql/set_var.cc: SET TIMESTAMP=double sql/set_var.h: @@TIMESTAMP is a double sql/share/errmsg.txt: precision and scale are unsigned sql/slave.cc: replication of NOW(6) sql/sp_head.cc: cleanup sql/sql_class.cc: support for NOW(6) sql/sql_class.h: support for NOW(6) sql/sql_insert.cc: support for NOW(6) sql/sql_select.cc: use item->cmp_type(). move a comment where it belongs sql/sql_show.cc: new column I_S.COLUMNS.DATETIME_PRECISION sql/sql_yacc.yy: TIME(X), DATETIME(X), cast, NOW(X), CURTIME(X), etc sql/time.cc: fix date_add_interval() to support MYSQL_TIMESTAMP_TIME argument storage/myisam/ha_myisam.cc: TIMESTAMP no longer carries ZEROFIELD flag, still we keep MYI file compatible. strings/my_vsnprintf.c: warnings tests/mysql_client_test.c: old timestamp(X) does not work anymore datetime is no longer equal to time
281 lines
13 KiB
Text
281 lines
13 KiB
Text
drop table if exists t1,t2;
|
||
select 0=0,1>0,1>=1,1<0,1<=0,1!=0,strcmp("abc","abcd"),strcmp("b","a"),strcmp("a","a") ;
|
||
0=0 1>0 1>=1 1<0 1<=0 1!=0 strcmp("abc","abcd") strcmp("b","a") strcmp("a","a")
|
||
1 1 1 0 0 1 -1 1 0
|
||
select "a"<"b","a"<="b","b">="a","b">"a","a"="A","a"<>"b";
|
||
"a"<"b" "a"<="b" "b">="a" "b">"a" "a"="A" "a"<>"b"
|
||
1 1 1 1 1 1
|
||
select "a "="A", "A "="a", "a " <= "A b";
|
||
"a "="A" "A "="a" "a " <= "A b"
|
||
1 1 1
|
||
select "abc" like "a%", "abc" not like "%d%", "a%" like "a\%","abc%" like "a%\%","abcd" like "a%b_%d", "a" like "%%a","abcde" like "a%_e","abc" like "abc%";
|
||
"abc" like "a%" "abc" not like "%d%" "a%" like "a\%" "abc%" like "a%\%" "abcd" like "a%b_%d" "a" like "%%a" "abcde" like "a%_e" "abc" like "abc%"
|
||
1 1 1 1 1 1 1 1
|
||
select "a" like "%%b","a" like "%%ab","ab" like "a\%", "ab" like "_", "ab" like "ab_", "abc" like "%_d", "abc" like "abc%d";
|
||
"a" like "%%b" "a" like "%%ab" "ab" like "a\%" "ab" like "_" "ab" like "ab_" "abc" like "%_d" "abc" like "abc%d"
|
||
0 0 0 0 0 0 0
|
||
select '?' like '|%', '?' like '|%' ESCAPE '|', '%' like '|%', '%' like '|%' ESCAPE '|', '%' like '%';
|
||
'?' like '|%' '?' like '|%' ESCAPE '|' '%' like '|%' '%' like '|%' ESCAPE '|' '%' like '%'
|
||
0 0 0 1 1
|
||
select 'abc' like '%c','abcabc' like '%c', "ab" like "", "ab" like "a", "ab" like "ab";
|
||
'abc' like '%c' 'abcabc' like '%c' "ab" like "" "ab" like "a" "ab" like "ab"
|
||
1 1 0 0 1
|
||
select "Det här är svenska" regexp "h[[:alpha:]]+r", "aba" regexp "^(a|b)*$";
|
||
"Det här är svenska" regexp "h[[:alpha:]]+r" "aba" regexp "^(a|b)*$"
|
||
1 1
|
||
select "aba" regexp concat("^","a");
|
||
"aba" regexp concat("^","a")
|
||
1
|
||
select !0,NOT 0=1,!(0=0),1 AND 1,1 && 0,0 OR 1,1 || NULL, 1=1 or 1=1 and 1=0;
|
||
!0 NOT 0=1 !(0=0) 1 AND 1 1 && 0 0 OR 1 1 || NULL 1=1 or 1=1 and 1=0
|
||
1 1 0 1 0 1 1 1
|
||
select 2 between 1 and 3, "monty" between "max" and "my",2=2 and "monty" between "max" and "my" and 3=3;
|
||
2 between 1 and 3 "monty" between "max" and "my" 2=2 and "monty" between "max" and "my" and 3=3
|
||
1 1 1
|
||
select 'b' between 'a' and 'c', 'B' between 'a' and 'c';
|
||
'b' between 'a' and 'c' 'B' between 'a' and 'c'
|
||
1 1
|
||
select 2 in (3,2,5,9,5,1),"monty" in ("david","monty","allan"), 1.2 in (1.4,1.2,1.0);
|
||
2 in (3,2,5,9,5,1) "monty" in ("david","monty","allan") 1.2 in (1.4,1.2,1.0)
|
||
1 1 1
|
||
select -1.49 or -1.49,0.6 or 0.6;
|
||
-1.49 or -1.49 0.6 or 0.6
|
||
1 1
|
||
select 3 ^ 11, 1 ^ 1, 1 ^ 0, 1 ^ NULL, NULL ^ 1;
|
||
3 ^ 11 1 ^ 1 1 ^ 0 1 ^ NULL NULL ^ 1
|
||
8 0 1 NULL NULL
|
||
explain extended select 3 ^ 11, 1 ^ 1, 1 ^ 0, 1 ^ NULL, NULL ^ 1;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
Warnings:
|
||
Note 1003 select (3 ^ 11) AS `3 ^ 11`,(1 ^ 1) AS `1 ^ 1`,(1 ^ 0) AS `1 ^ 0`,(1 ^ NULL) AS `1 ^ NULL`,(NULL ^ 1) AS `NULL ^ 1`
|
||
select 1 XOR 1, 1 XOR 0, 0 XOR 1, 0 XOR 0, NULL XOR 1, 1 XOR NULL, 0 XOR NULL;
|
||
1 XOR 1 1 XOR 0 0 XOR 1 0 XOR 0 NULL XOR 1 1 XOR NULL 0 XOR NULL
|
||
0 1 1 0 NULL NULL NULL
|
||
select 1 like 2 xor 2 like 1;
|
||
1 like 2 xor 2 like 1
|
||
0
|
||
select 10 % 7, 10 mod 7, 10 div 3;
|
||
10 % 7 10 mod 7 10 div 3
|
||
3 3 3
|
||
explain extended select 10 % 7, 10 mod 7, 10 div 3;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
Warnings:
|
||
Note 1003 select (10 % 7) AS `10 % 7`,(10 % 7) AS `10 mod 7`,(10 DIV 3) AS `10 div 3`
|
||
select (1 << 64)-1, ((1 << 64)-1) DIV 1, ((1 << 64)-1) DIV 2;
|
||
(1 << 64)-1 ((1 << 64)-1) DIV 1 ((1 << 64)-1) DIV 2
|
||
18446744073709551615 18446744073709551615 9223372036854775807
|
||
explain extended select (1 << 64)-1, ((1 << 64)-1) DIV 1, ((1 << 64)-1) DIV 2;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
Warnings:
|
||
Note 1003 select ((1 << 64) - 1) AS `(1 << 64)-1`,(((1 << 64) - 1) DIV 1) AS `((1 << 64)-1) DIV 1`,(((1 << 64) - 1) DIV 2) AS `((1 << 64)-1) DIV 2`
|
||
create table t1 (a int);
|
||
insert t1 values (1);
|
||
select * from t1 where 1 xor 1;
|
||
a
|
||
explain extended select * from t1 where 1 xor 1;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||
Warnings:
|
||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 0
|
||
select - a from t1;
|
||
- a
|
||
-1
|
||
explain extended select - a from t1;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||
Warnings:
|
||
Note 1003 select -(1) AS `- a` from `test`.`t1`
|
||
drop table t1;
|
||
select 5 between 0 and 10 between 0 and 1,(5 between 0 and 10) between 0 and 1;
|
||
5 between 0 and 10 between 0 and 1 (5 between 0 and 10) between 0 and 1
|
||
0 1
|
||
select 1 and 2 between 2 and 10, 2 between 2 and 10 and 1;
|
||
1 and 2 between 2 and 10 2 between 2 and 10 and 1
|
||
1 1
|
||
select 1 and 0 or 2, 2 or 1 and 0;
|
||
1 and 0 or 2 2 or 1 and 0
|
||
1 1
|
||
select _koi8r'a' = _koi8r'A';
|
||
_koi8r'a' = _koi8r'A'
|
||
1
|
||
select _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci;
|
||
_koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci
|
||
1
|
||
explain extended select _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci;
|
||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||
Warnings:
|
||
Note 1003 select (_koi8r'a' = (_koi8r'A' collate koi8r_general_ci)) AS `_koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci`
|
||
select _koi8r'a' = _koi8r'A' COLLATE koi8r_bin;
|
||
_koi8r'a' = _koi8r'A' COLLATE koi8r_bin
|
||
0
|
||
select _koi8r'a' COLLATE koi8r_general_ci = _koi8r'A';
|
||
_koi8r'a' COLLATE koi8r_general_ci = _koi8r'A'
|
||
1
|
||
select _koi8r'a' COLLATE koi8r_bin = _koi8r'A';
|
||
_koi8r'a' COLLATE koi8r_bin = _koi8r'A'
|
||
0
|
||
select _koi8r'a' COLLATE koi8r_bin = _koi8r'A' COLLATE koi8r_general_ci;
|
||
ERROR HY000: Illegal mix of collations (koi8r_bin,EXPLICIT) and (koi8r_general_ci,EXPLICIT) for operation '='
|
||
select _koi8r'a' = _latin1'A';
|
||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
||
select strcmp(_koi8r'a', _koi8r'A');
|
||
strcmp(_koi8r'a', _koi8r'A')
|
||
0
|
||
select strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_general_ci);
|
||
strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_general_ci)
|
||
0
|
||
select strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_bin);
|
||
strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_bin)
|
||
1
|
||
select strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A');
|
||
strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A')
|
||
0
|
||
select strcmp(_koi8r'a' COLLATE koi8r_bin, _koi8r'A');
|
||
strcmp(_koi8r'a' COLLATE koi8r_bin, _koi8r'A')
|
||
1
|
||
select strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A' COLLATE koi8r_bin);
|
||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,EXPLICIT) and (koi8r_bin,EXPLICIT) for operation 'strcmp'
|
||
select strcmp(_koi8r'a', _latin1'A');
|
||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation 'strcmp'
|
||
select _koi8r'a' LIKE _koi8r'A';
|
||
_koi8r'a' LIKE _koi8r'A'
|
||
1
|
||
select _koi8r'a' LIKE _koi8r'A' COLLATE koi8r_general_ci;
|
||
_koi8r'a' LIKE _koi8r'A' COLLATE koi8r_general_ci
|
||
1
|
||
select _koi8r'a' LIKE _koi8r'A' COLLATE koi8r_bin;
|
||
_koi8r'a' LIKE _koi8r'A' COLLATE koi8r_bin
|
||
0
|
||
select _koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A';
|
||
_koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A'
|
||
1
|
||
select _koi8r'a' COLLATE koi8r_bin LIKE _koi8r'A';
|
||
_koi8r'a' COLLATE koi8r_bin LIKE _koi8r'A'
|
||
0
|
||
select _koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A' COLLATE koi8r_bin;
|
||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,EXPLICIT) and (koi8r_bin,EXPLICIT) for operation 'like'
|
||
select _koi8r'a' LIKE _latin1'A';
|
||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation 'like'
|
||
CREATE TABLE t1 ( faq_group_id int(11) NOT NULL default '0', faq_id int(11) NOT NULL default '0', title varchar(240) default NULL, keywords text, description longblob, solution longblob, status tinyint(4) NOT NULL default '0', access_id smallint(6) default NULL, lang_id smallint(6) NOT NULL default '0', created datetime NOT NULL default '0000-00-00 00:00:00', updated datetime default NULL, last_access datetime default NULL, last_notify datetime default NULL, solved_count int(11) NOT NULL default '0', static_solved int(11) default NULL, solved_1 int(11) default NULL, solved_2 int(11) default NULL, solved_3 int(11) default NULL, solved_4 int(11) default NULL, solved_5 int(11) default NULL, expires datetime default NULL, notes text, assigned_to smallint(6) default NULL, assigned_group smallint(6) default NULL, last_edited_by smallint(6) default NULL, orig_ref_no varchar(15) binary default NULL, c$fundstate smallint(6) default NULL, c$contributor smallint(6) default NULL, UNIQUE KEY t1$faq_id (faq_id), KEY t1$group_id$faq_id (faq_group_id,faq_id), KEY t1$c$fundstate (c$fundstate) ) ENGINE=MyISAM;
|
||
INSERT INTO t1 VALUES (82,82,'How to use the DynaVox Usage Counts Feature','usages count, number, corner, white, box, button','<as-html>\r\n<table width=\"100%\" border=\"0\">\r\n <tr>\r\n <td width=\"3%\"> </td>\r\n <td width=\"97%\">\r\n <h3><font face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#000000\">How \r\n To</font><!-- #BeginEditable \"CS_troubleshoot_question\" --><font face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#000099\"><font color=\"#000000\">: \r\n Display or Hide the Usage Counts to find out how many times each button is being selected. </font></font><!-- #EndEditable --></h3>\r\n </td>\r\n </tr>\r\n</table>','<as-html>\r\n <table width=\"100%\" border=\"0\">\r\n <tr>\r\n <td width=\"3%\"> </td>\r\n \r\n<td width=\"97%\"><!-- #BeginEditable \"CS_troubleshoot_answer\" --> \r\n \r\n<p><font color=\"#000000\" face=\"Verdana, Arial, Helvetica, sans-serif\">1. Select \r\n the <i>On/Setup</i> button to access the DynaVox Setup Menu.<br>\r\n 2. Select <b>Button Features.</b><br>\r\n 3. Below the <b>OK</b> button is the <b>Usage Counts</b> button.<br>\r\n a. If it says \"Hidden\" then the Usage Counts will not be displayed.<br>\r\n b. If it says \"Displayed\" then the Usage Counts will be shown.<br>\r\n c. Select the <b>Usage Counts</b> Option Ring once and it will toggle \r\n to the alternative option.<br>\r\n 4. Once the correct setting has been chosen, select <b>OK</b> to leave the <i>Button \r\n Features</i> menu.<br>\r\n 5. Select <b>OK</b> out of the <i>Setup</i> menu and return to the communication \r\n page.</font></p>\r\n <p><font color=\"#000000\" face=\"Verdana, Arial, Helvetica, sans-serif\">For \r\n further information on <i>Usage Counts,</i> see the <i>Button Features \r\n Menu Entry</i> in the DynaVox/DynaMyte Reference Manual.</font></p>\r\n<!-- #EndEditable --></td>\r\n </tr>\r\n</table>',4,1,1,'2001-11-16 16:43:34','2002-11-25 12:09:43','2003-07-24 01:04:48',NULL,11,NULL,0,0,0,0,0,NULL,NULL,NULL,NULL,11,NULL,NULL,NULL);
|
||
CREATE TABLE t2 ( access_id smallint(6) NOT NULL default '0', name varchar(20) binary default NULL, rank smallint(6) NOT NULL default '0', KEY t2$access_id (access_id) ) ENGINE=MyISAM;
|
||
INSERT INTO t2 VALUES (1,'Everyone',2),(2,'Help',3),(3,'Customer Support',1);
|
||
SELECT f_acc.rank, a1.rank, a2.rank FROM t1 LEFT JOIN t1 f1 ON (f1.access_id=1 AND f1.faq_group_id = t1.faq_group_id) LEFT JOIN t2 a1 ON (a1.access_id = f1.access_id) LEFT JOIN t1 f2 ON (f2.access_id=3 AND f2.faq_group_id = t1.faq_group_id) LEFT JOIN t2 a2 ON (a2.access_id = f2.access_id), t2 f_acc WHERE LEAST(a1.rank,a2.rank) = f_acc.rank;
|
||
rank rank rank
|
||
DROP TABLE t1,t2;
|
||
CREATE TABLE t1 (d varchar(6), k int);
|
||
INSERT INTO t1 VALUES (NULL, 2);
|
||
SELECT GREATEST(d,d) FROM t1 WHERE k=2;
|
||
GREATEST(d,d)
|
||
NULL
|
||
DROP TABLE t1;
|
||
select 1197.90 mod 50;
|
||
1197.90 mod 50
|
||
47.90
|
||
select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
|
||
5.1 mod 3 5.1 mod -3 -5.1 mod 3 -5.1 mod -3
|
||
2.1 2.1 -2.1 -2.1
|
||
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
||
5 mod 3 5 mod -3 -5 mod 3 -5 mod -3
|
||
2 2 -2 -2
|
||
select (12%0) <=> null as '1';
|
||
1
|
||
1
|
||
select (12%0) is null as '1';
|
||
1
|
||
1
|
||
select 12%0 as 'NULL';
|
||
NULL
|
||
NULL
|
||
select 12%2 as '0';
|
||
0
|
||
0
|
||
select 12%NULL as 'NULL';
|
||
NULL
|
||
NULL
|
||
select 12 % null as 'NULL';
|
||
NULL
|
||
NULL
|
||
select null % 12 as 'NULL';
|
||
NULL
|
||
NULL
|
||
select null % 0 as 'NULL';
|
||
NULL
|
||
NULL
|
||
select 0 % null as 'NULL';
|
||
NULL
|
||
NULL
|
||
select null % null as 'NULL';
|
||
NULL
|
||
NULL
|
||
select (12 mod 0) <=> null as '1';
|
||
1
|
||
1
|
||
select (12 mod 0) is null as '1';
|
||
1
|
||
1
|
||
select 12 mod 0 as 'NULL';
|
||
NULL
|
||
NULL
|
||
select 12 mod 2 as '0';
|
||
0
|
||
0
|
||
select 12 mod null as 'NULL';
|
||
NULL
|
||
NULL
|
||
select null mod 12 as 'NULL';
|
||
NULL
|
||
NULL
|
||
select null mod 0 as 'NULL';
|
||
NULL
|
||
NULL
|
||
select 0 mod null as 'NULL';
|
||
NULL
|
||
NULL
|
||
select null mod null as 'NULL';
|
||
NULL
|
||
NULL
|
||
select mod(12.0, 0) as 'NULL';
|
||
NULL
|
||
NULL
|
||
select mod(12, 0.0) as 'NULL';
|
||
NULL
|
||
NULL
|
||
select mod(12, NULL) as 'NULL';
|
||
NULL
|
||
NULL
|
||
select mod(12.0, NULL) as 'NULL';
|
||
NULL
|
||
NULL
|
||
select mod(NULL, 2) as 'NULL';
|
||
NULL
|
||
NULL
|
||
select mod(NULL, 2.0) as 'NULL';
|
||
NULL
|
||
NULL
|
||
create table t1 (a int, b int);
|
||
insert into t1 values (1,2), (2,3), (3,4), (4,5);
|
||
select * from t1 where a not between 1 and 2;
|
||
a b
|
||
3 4
|
||
4 5
|
||
select * from t1 where a not between 1 and 2 and b not between 3 and 4;
|
||
a b
|
||
4 5
|
||
drop table t1;
|
||
SELECT GREATEST(1,NULL) FROM DUAL;
|
||
GREATEST(1,NULL)
|
||
NULL
|
||
SELECT LEAST('xxx','aaa',NULL,'yyy') FROM DUAL;
|
||
LEAST('xxx','aaa',NULL,'yyy')
|
||
NULL
|
||
SELECT LEAST(1.1,1.2,NULL,1.0) FROM DUAL;
|
||
LEAST(1.1,1.2,NULL,1.0)
|
||
NULL
|
||
SELECT GREATEST(1.5E+2,1.3E+2,NULL) FROM DUAL;
|
||
GREATEST(1.5E+2,1.3E+2,NULL)
|
||
NULL
|