char_length没有像想象的那样工作

时间:2012-06-22 19:17:21

标签: mysql

以下是我的内容

+++++++++++++++
+ 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.

Demo

2 个答案:

答案 0 :(得分:3)

您正在CHAR_LENGTH()中包装整个查询输出。将WHERE id = 1应用于子查询时,它会返回一行,并且由于您选择了一个列,因此您将获得一个字符串值,CHAR_LENGTH()将接受该值作为其参数。

如果子查询select mySata from mytable返回多行,则char_length()无法接受它作为输入。相反,只需在常规CHAR_LENGTH()语句中将myData应用于SELECT即可查看多行的长度。

SELECT CHAR_LENGTH(myData) AS myLength FROM mytable

答案 1 :(得分:0)

使用char_length((select myData from mytable)),您将行集对象传递给char_length无法处理的函数。

使用查询结果调用函数时,请确保只选择一行,并且只选择一列,因此结果可以解释为单个值。