我可以在T-SQL SELECT中定义一个循环中的变量(像LINQ中的LET)吗?
发布时间:2020-05-25 02:59:39 所属栏目:MsSql 来源:互联网
导读:我可以用LINQ写这样的东西: var selection = from person in personList let initials = person.FirstName[0] + person.LastName[0] select initials; 我可以做类似于SQL的事情,例如: SELECT @InitialsFR
|
我可以用LINQ写这样的东西: var selection = from person in personList
let initials = person.FirstName[0] + person.LastName[0]
select initials;
我可以做类似于SQL的事情,例如: SELECT @Initials FROM [Person] SET @Initials = SUBSTRING (Person.FirstName,1,1) + SUBSTRING (Person.LastName,1) 可能不是,但也许有一个技巧? 我需要一个预先计算的变量,以便在复杂的WHERE子句中进一步使用,以避免极端的复杂性和代码重复. 解决方法一个干净的方法,而不添加一个临时表,循环等,将使用通用表表达式(CTE).例:;WITH PersonsWithInitials AS
(
SELECT
SUBSTRING (COALESCE(Person.FirstName,''),1)
+ SUBSTRING (COALESCE(Person.LastName,1) AS Initials,FirstName,LastName,City
FROM
[Person]
)
SELECT
FirstName,City,Initials
FROM
PersonsWithInitials
WHERE
/* Complex WHERE clause goes here and it can reference Initials as if it were a field */
代替上面的“空”,你可以使用一段时间或其他东西来代替空名字段. 所有这些都应该在.NET的单个SQL调用中执行 – CTE不像视图,存储过程,临时表等保存在数据库中. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
