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。谢谢