【发布时间】:2020-03-19 12:42:48
【问题描述】:
我正在尝试使用 SQLKata for SQLServer 编写以下查询:
SELECT Company FROM Table1 INNER JOIN Table2 ON LEFT(Table1.[Company], 5) = LEFT(Table2.accountName, 5)
我尝试了以下方法:
var db = new QueryFactory(connection, compiler);
var query = db.Query("Table1")
.Join("Table2", "LEFT([Table1].[Company],5)", "LEFT([Table2].[accountName],5)")
.Select("Company").Get();
但失败并出现错误“无法绑定多部分标识符”。
看来我也没有可以在 sqlKata 中使用的 JoinRaw。有谁知道我是否可以在 sql kata 中创建一个左字符串函数并在上面的查询中使用?
【问题讨论】:
-
使用 SQL Server Management Studio 并运行查询。 SSMS 中的错误消息要好得多,并且相同的命令文本查询将在 SSMS 中运行。似乎无法连接数据库中的两个表。可能一个是整数,另一个是字符串。列名拼写不正确可能是错字。 SSMS 将给出确切的错误类型。
-
我上面复制的 sql 语句在 SSMS 中有效。我想要做的是在 SQLKata 中重新创建这个语句。我不知道这是否可能,因为我不知道是否有办法在 SQLKata 中创建 LEFT() 字符串函数,这就是我想要找出的。
-
看起来您正在使用实体,其中有映射到数据库的类。所以我不知道你为什么 Join 使用字符串而不是 db 类属性。
-
我没有使用实体框架。我正在使用 SQLKata。
-
我不太了解SQLKata。我建议将您的查询分成多个部分,并确保每个部分不返回空值。请参阅 SQLKata 文档:sqlkata.com/docs/join
标签: c# sql-server inner-join sqlkata