gpt4 book ai didi

sql - 我可以在 T-SQL SELECT 中定义循环变量(如 LINQ 中的 LET)吗?

转载 作者:行者123 更新时间:2023-12-02 09:22:44 24 4
gpt4 key购买 nike

我可以用 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, 1)

可能不是,但也许有一个技巧?

我需要一个预先计算的变量,以便在复杂的 WHERE 子句中进一步使用,以避免极端的复杂性和代码重复。

最佳答案

在不添加临时表、循环等的情况下执行此操作的一种简洁方法是使用公共(public)表表达式 (CTE)。示例:

;WITH PersonsWithInitials AS
(
SELECT
SUBSTRING (COALESCE(Person.FirstName,''), 1, 1)
+ SUBSTRING (COALESCE(Person.LastName,''), 1, 1) AS Initials,
FirstName,
LastName,
City
FROM
[Person]
)
SELECT
FirstName,
LastName,
City,
Initials
FROM
PersonsWithInitials
WHERE
/* Complex WHERE clause goes here and it can reference Initials as if it were a field */

您可以使用句点或其他内容来代替上面的空“'”。

这一切都应该在 .NET 的单个 SQL 调用中执行 - CTE 不像 View 、存储过程、临时表等那样保存在数据库中。

关于sql - 我可以在 T-SQL SELECT 中定义循环变量(如 LINQ 中的 LET)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com