MySQL:选择字符串的Concat和结果Concat的长度

MySQL:选择字符串的Concat和结果Concat的长度,mysql,sql,Mysql,Sql,在我的创建视图中,我希望: SELECT CONCAT( t.str1, t.str2 ) AS Title, CHAR_LENGTH( Title ) AS Length 但这将产生错误: “字段列表”中的未知列“标题” 不必两次压缩相同字符串的正确方法是什么?您不能引用在选择中创建的别名,请改用表达式: SELECT CONCAT( t.str1, t.str2 ) AS Title, CHAR_LENGTH(CONCAT( t.str1, t.str2 ) ) AS Le

在我的创建视图中,我希望:

SELECT CONCAT( t.str1, t.str2 ) AS Title, CHAR_LENGTH( Title ) AS Length
但这将产生错误:

“字段列表”中的未知列“标题”


不必两次压缩相同字符串的正确方法是什么?

您不能引用在
选择中创建的别名,请改用表达式:

SELECT CONCAT( t.str1, t.str2 ) AS Title,
       CHAR_LENGTH(CONCAT( t.str1, t.str2 )  ) AS Length
FROM table_name t
如果需要,可以使用子查询:

SELECT sub.Title, CHAR_LENGTH( sub.Title ) AS Length
FROM (
   SELECT CONCAT( t.str1, t.str2 ) AS Title
   FROM table_name t
) AS sub;

“一次执行所有操作”是指同一操作中的所有表达式 逻辑查询过程阶段同时进行逻辑计算

以及:

无法在SELECT子句的下一列表达式中使用别名。 在查询中,我们创建了一个正确的名字,并希望在中使用它 下一列将生成全名,但会同时执行所有操作 概念告诉我们不能这样做,因为 评估相同的逻辑查询过程阶段(这里是SELECT) 同时在逻辑上


但是SQL引擎是否会对此进行优化,从而不会对每一行执行两次缩进操作?@Pirs01使用第一个版本,不再担心性能问题。但是如果我在“创建”视图中使用子查询,那么我将不再使用合并算法,因此就性能而言,这不是我的最佳选择,对吗?编辑:我想我已经不用它了,因为我用了CONCAT和CHAR_LENGTH@Pirs01我对你的合并算法一无所知,编辑你的问题并添加更多细节。对我来说,你在错误的地方寻找性能提升。现在有点匆忙,但我会尽量记住稍后做测试,然后回来报告结果。无论哪一种方式,标记为anwsered。谢谢