字符长度未按预期工作

4
以下是我所拥有的内容。
+++++++++++++++
+ 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.

演示

2个回答

3
您正在用CHAR_LENGTH()包裹整个查询输出。将WHERE id = 1应用于子查询时,它会返回一行数据,由于您选择了单个列,因此会返回一个字符串值,这个字符串值将作为CHAR_LENGTH()的参数。
如果子查询select mySata from mytable返回多行,则char_length()无法接受它作为输入。相反,只需在常规SELECT语句中对myData应用CHAR_LENGTH()即可查看多行的长度。
SELECT CHAR_LENGTH(myData) AS myLength FROM mytable

0
使用 char_length((select myData from mytable)),您将一个行集对象传递到函数中,而 char_length 无法处理它。
在调用带有查询结果的函数时,请确保仅选择一行和一列,以便将结果解释为单个值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接