2番目のクエリで使用できるように、mysqlで変数を宣言するにはどうすればいいですか?MySQLで変数を宣言するには?
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
2番目のクエリで使用できるように、mysqlで変数を宣言するにはどうすればいいですか?MySQLで変数を宣言するには?
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
MySQLでの変数の3種類の主にあります:
User-defined variables(@
接頭辞):
あなたは私のようなものを書きたいと思い
ユーザー定義の変数に宣言せずにアクセスすることができます。 initiateそれをalizing。 が初期化されていない変数を参照する場合は、値はNULL
で、文字列の型があります。
SELECT @var_any_var_name
あなたはSET
またはSELECT
ステートメントを使用して変数を初期化することができます
SET @start = 1, @finish = 10;
または
SELECT @start := 1, @finish := 10;
SELECT * FROM places WHERE place BETWEEN @start AND @finish;
ユーザー変数は、データ 種類の限定されたセットから値を割り当てることができます。整数、小数点、浮動小数点、バイナリまたは非バイナリ文字列、 またはNULL値。
ユーザー定義変数はセッション固有です。つまり、あるクライアントによって定義された変数 は、他のクライアントによって表示または使用されません。
を使用してSELECT
クエリで使用できます。
Local Variables(接頭辞なし):
ローカル変数は、それをアクセスするDECLARE
前に使用して宣言する必要があります。
それらはローカル変数として使用することができ、入力は、ストアドプロシージャ内部 パラメータ:DEFAULT
句が欠落している場合
DELIMITER //
CREATE PROCEDURE sp_test(var1 INT)
BEGIN
DECLARE start INT unsigned DEFAULT 1;
DECLARE finish INT unsigned DEFAULT 10;
SELECT var1, start, finish;
SELECT * FROM places WHERE place BETWEEN start AND finish;
END; //
DELIMITER ;
CALL sp_test(5);
は、初期値はNULL
あります。
ローカル変数のスコープは、宣言されている 内のBEGIN ... END
ブロックです。
@@
接頭辞)MySQLサーバは、デフォルト値に設定さsystem variables多くを維持しています。 タイプはGLOBAL
,SESSION
またはBOTH
のいずれかです。
グローバル変数はサーバーの全体的な操作に影響しますが、セッション変数は個々のクライアント接続の操作に影響します。
実行中のサーバーで使用されている現在の値を確認するには、SHOW VARIABLES
ステートメントまたはSELECT @@var_name
ステートメントを使用します。
SHOW VARIABLES LIKE '%wait_timeout%';
SELECT @@sort_buffer_size;
これらは、コマンドラインまたはオプションファイルのオプションを使用してサーバーの起動時に設定できます。 サーバがSET GLOBAL
またはSET SESSION
を使用して実行している間、それらのほとんどは動的に変更することができます。
-- Syntax to Set value to a Global variable:
SET GLOBAL sort_buffer_size=1000000;
SET @@global.sort_buffer_size=1000000;
-- Syntax to Set value to a Session variable:
SET sort_buffer_size=1000000;
SET SESSION sort_buffer_size=1000000;
SET @@sort_buffer_size=1000000;
SET @@local.sort_buffer_size=10000;
使用はを設定したり、
SET @counter := 100;
SELECT @variable_name := value;
例を選択:
をSELECT @price := MAX(product.price)
FROM product
SET
SET @var_name = value
OR
SET @var := value
両方演算子=と:=
が
SELECT col1, @var_name := col2 from tb_name WHERE "conditon";
を選択のみCOL2の最後の値は、(オーバーライド)維持されます。選択の結果は、col2の値に
'='と ':='の違いは何ですか? –
私はmysql SELECT構文が=(比較)の意味を分離する必要があると思います:=(asign) – bortunac
DECLAREのVAR_NAME [、VAR_NAME]を含有していない。この場合、
SELECT col1, col2 INTO @var_name, col3 FROM .....
...タイプ[DEFAULT値] この文は、格納されたプログラム内のローカル変数を宣言します。
Ex。 DECLARE ID INT符号なしDEFAULT 1;
変数にデフォルト値を指定するには、DEFAULT句を含めます。値は式として指定できます。定数である必要はありません。 DEFAULT句がない場合、初期値はNULLです。
ローカル変数は、データ型とオーバーフローチェックに関して、ストアドルーチンパラメータのように扱われます。
変数宣言は、カーソル宣言またはハンドラ宣言の前に指定する必要があります。
ローカル変数名では大文字と小文字は区別されません。許容される文字と引用規則は他の識別子の場合と同じです
ローカル変数のスコープは、それが宣言されているBEGIN ... ENDブロックです。変数は、同じ名前の変数を宣言するブロックを除いて、宣言ブロック内にネストされたブロックで参照できます。
何とか '' '' = '' ''演算子が私のために働かなかった。 '' '' = '' ''演算子を使うとうまくいきました。 – divinedragon
'='演算子は 'SET'節でのみ動作します。 'SELECT'クエリの変数に値を代入するには、':= '演算子を使うことができます。 'SELECT @start:= 1' – Omesh
あなたはこれが何を意味するのかを明確にしてください:「プレフィックス@で示されるユーザ定義のセッション変数を宣言する必要はありませんか? – billynoah