我有一张这样的表:
name
-----------
45Paris123
23HaNoi456
35Qatar789
这是函数
name1 = mid(name, 3, 8)
name2 = left(name1, 5)
name3 = left(name2, 2)
所以最终的结果是
name3
------
Pa
Ha
Qa
表格和功能都得到了简化。它可能要复杂得多,因此功能组合并不真实可行
我们怎样才能成功?
答案 0 :(得分:0)
如果我做得对,你想用一列作为另一列的基础。
只有当列存在于表中时才可能。如果你在谈论计算列的别名,答案是否定的。
由于别名不属于select critera
,因此您只能选择*
或column name
或expression
<select_criteria> ::=
[ TOP ( top_expression ) ]
[ ALL | DISTINCT ]
{ * | column_name | expression }
但你可以重新计算它:
SELECT name AS input
, mid(name,3,8) AS name1
, left(mid(name,3,8),5) AS name2
, left(left(mid(name,3,8),5),2) AS name3
FROM myTable
select *
into #TempTable
from YourTable
select *
from #TempTable
最好的解决方案是在进入DB之前解决这个问题
这样一个简单的正则表达式:\d+|\D+
应该可以解决问题。解释和测试here。