3

以下は私が持っているものです

+++++++++++++++
+ id + myData +
+++++++++++++++
+ 1  + ABCD   +
+ 2  + ABCDD  +
+++++++++++++++

私が実行すると

select char_length((select myData from mytable where id = 1)) as MyLength;

私は結果を得る

++++++++++++
+ MyLength +
++++++++++++
+  4       +
++++++++++++

しかし、クエリを実行すると、

select char_length((select myData from mytable) as MyLength;

次のようにエラーが発生します

DDL and DML statements are not allowed in the query panel for MySQL; only SELECT statements are allowed.

デモ

4

2 に答える 2

3

クエリ出力全体を でラップしていますCHAR_LENGTH()。をサブクエリに適用するWHERE id = 1と、単一の行が返されます。単一の列を選択したためCHAR_LENGTH()、引数として受け入れる単一の文字列値が返されます。

サブクエリselect mySata from mytableが複数の行を返す場合、char_length()それを入力として受け入れることはできません。代わりに、複数の行の長さを確認するには、通常のステートメントで to を適用CHAR_LENGTH()するだけです。myDataSELECT

SELECT CHAR_LENGTH(myData) AS myLength FROM mytable
于 2012-06-22T19:19:44.997 に答える
0

char_length((select myData from mytable))行セットオブジェクトを関数に渡していますが、これはchar_length処理できません。

クエリ結果を使用して関数を呼び出す場合は、結果が単一の値として解釈されるように、行と列を 1 つだけ選択してください。

于 2012-06-22T20:12:26.233 に答える