
No.3ベストアンサー
- 回答日時:
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文を再度、実行して結果の違いを確認してみてください。
No.2
- 回答日時:
言語によって関数の書式や演算子の意味が異なることはよくあること
||はMySQLではORですから連結演算子にはつかえません。
http://dev.mysql.com/doc/refman/5.1/ja/extension …
移植性を考慮してのことでしょうけど、すでに定義されているものを
いじるとなるとそちらのケアまで考慮しないといけないので
かえって問題が広がる可能性があることも考慮してください
(つまり素直にCONCATつかいなさい・・・ってことなんですけど)
No.1
- 回答日時:
質問の意図が分かりません。
どういう理由で、代替手段を必要としているのでしょうか?
まず、MySQLでは、SQLの構文モードが存在します。インストール時の標準設定では、MySQL構文モードになっています。
標準SQLや主要なRDBMSでは、「"」(二重引用符)で囲んだものは、表名や列名などの名前ですが、MySQL構文モードでは、文字定数になります。
一方、標準SQL準拠にするには、SQLモードでANSI構文モードにするといった方法があります。
http://dev.mysql.com/doc/refman/5.1/ja/server-sq …
それ以外には、アプリ側でやるとかいろいろ方法は考えられます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLiteでINSERT OR UPDATE
-
差し込み後、元データを変更し...
-
for whichの使い方
-
特定の文字列で列を区切るには?
-
ソフトバンクの無料着うたのお...
-
SQLで列名を変数にできないでし...
-
SQLで特定の項目の重複のみを排...
-
複数アドインプログラムをひと...
-
一度のsqlで値を取得するには
-
ある条件の最大値+1を初番する...
-
Outlook 送受信エラー
-
誰か教えてください
-
IDの欠番
-
UWSCでMOUSEORG関数が上手く処...
-
php+mysqlで複数選択削除について
-
この意味の違いを教えてくださ...
-
エクセルの関数について教えて...
-
Excel VBA ADODB
-
VMwareがCDドライブを認識する...
-
OSPFのDRの選出基準について シ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日本語のエイリアスは" "で囲...
-
コマンドプロンプトでデータを...
-
CONCAT以外で文字列連結できますか
-
~以上~未満の指定の方法
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
for whichの使い方
-
特定の文字列で列を区切るには?
-
Outlook 送受信エラー
-
SQLで特定の項目の重複のみを排...
-
外部参照してるキーを主キーに...
-
1、Rstudioで回帰直線を求める...
-
カーソル0件の時にエラーを発生...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
SELECT 文 GROUP での1件目を...
-
列のヘッダーを含めるのをデフ...
-
INSERT文でフィールドの1つだ...
-
SQLServerで文字列の末尾からあ...
おすすめ情報