【发布时间】:2013-03-06 11:12:03
【问题描述】:
我正在尝试从数据库中消除隐式转换。
我在下面的 UpdatedByID 字段上添加了 CAST 语句,因为这是一个 Char(10),它正在加入 FROM 语句中的一个 INT。但我仍然得到隐式转换。我一定遗漏了一些明显的东西??
SELECT DISTINCT ba.BookingID INTO #temp1
FROM BookedItemsAudit_tbl bia
INNER JOIN BookingAudit_tbl ba ON bia.BookingAuditID = ba.BookingAuditID
INNER JOIN User_tbl u ON u.UserId = CAST(ba.UpdatedById AS INT)
WHERE bia.BookedItemTypeId IN (1, 58, 60)
AND u.UserId = 5
这是精简的架构
BOOKINGAUDIT_TBL
Column_name Type Length
BookingAuditID int 4
BookingID int 4
UpdatedByID CHAR 10
UpdatedBy varchar 50
UpdatedDate datetime 8
TotalMargin money 8
BookingStatusId int 4
USER_TBL
Column_name Type Length
UserId int 4
FullName varchar 100
UserName varchar 20
此链接中的完整查询和架构
附上执行计划中出现提示时的错误提示
【问题讨论】:
-
您需要发布表的架构以及您收到的确切错误消息。
-
为了让您的问题更容易理解,请链接到sqlfiddle.com 上的示例,其中包含一些导致失败的数据。
-
我们能不能也看看 BookedItemsAudit_tbl 的架构
-
@tass 感谢 SQL 小提琴链接。我以前从未使用过该网站,看起来非常有用且直观
-
@robinDay 嗨罗宾,我想我会把很多东西发到 SQL fiddle 以防我错过了什么
标签: sql-server casting implicit-conversion