以下是我的内容
+++++++++++++++
+ 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.
答案 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
无法处理的函数。
使用查询结果调用函数时,请确保只选择一行,并且只选择一列,因此结果可以解释为单个值。