MySQLの独自構文と、標準SQLの構文を体感するごく簡単な例を作ってみました。
-- テスト用の表定義&データ
drop table if exists `t1`;
create table t1
(`c1` int primary key
,`c1-1` int
,`c2` varchar(5)
,`c3` varchar(5)
,`dt` date
);
insert into t1 values
(1,100,'abc','xyz','2011-04-01')
;
-- SQLモードの確認
select @@global.sql_mode;
select @@session.sql_mode;
-- MySQL構文とANSI構文の違い、引用符の意味などを確認するSQL例
select
*
, 1 -- 数値定数
, c1-1 -- 「列c1-1」という減算
, 'c1-1' -- 「'」(単一引用符)で囲んだものは文字定数
, "c1-1" -- 「"」(二重引用符)で囲んだものは、
-- MySQL構文モードでは文字定数
-- ANSI構文モードでは、列名など名前。
, `c1-1` -- 「`」(バッククォート)で囲んだものは、
-- MySQL独自仕様であり、列名など名前。
, 'abc'||'def' -- 「||」は、
-- MySQL構文モードでは、論理演算のor
-- ANSI構文モードでは、文字連結
, concat('abc','def') -- MySQL独自の文字連結関数
, 2011-04-14 -- yyyy-mm-ddを文字定数として指定しないと、
-- 日付でなく、単なる整数の減算として扱われる
, '2011-04-14' -- 'yyyy-mm-dd'といった形式の文字定数は、
-- 日付データ型と型変換してくれる。
from t1
;
-- この接続だけ、一時的にANSI構文モードに変更
set @@session.sql_mode='ANSI';
この後、上述のselect文を再度、実行して結果の違いを確認してみてください。
お礼
凄いです!こんな方法があるとは・・・感謝感謝です!ありがとうございます!