我有以下查询
SELECT *
FROM ChangeLog
INNER JOIN Jobs
ON CONVERT(Varchar(30), RTRIM(Substring(CAST(XagtableKeyValues as Varchar), 12, 30))) = Convert(Varchar(30), jmoJOBID)
WHERE xagTableName = 'JOBS'
AND Cast(xagChangeDate as date) = Cast(getdate() as Date)
AND xagTableOldValues like '%jmpreleasedtofloor%'
现在我知道我的子字符串是一个JobID,我知道这些JobID存在于Jobs表中。但是,我的查询什么都不返回。分开两个查询,我得到了我期望的结果。
这里有什么问题?
如果我将Inner Join
更改为Left Outer Join
,我发现这是另一件事。查询仍然不返回任何内容。尽管如果我完全删除了连接,它会按预期返回行。
我运行了这个查询,
SELECT Top(10)CONVERT(Varchar(20), RTRIM(Substring(CAST(XagtableKeyValues as Varchar), 12, 30)))
FROM M1_LV..ChangeLog
WHERE xagTableName = 'JOBS'
AND Cast(xagChangeDate as date) = Cast(getdate() as Date)
AND xagTableOldValues like '%jmpreleasedtofloor%'
然后返回,
29882-01-0001
29882-02-0001
29834-01-0001
29834-02-0001
29834-03-0001
29889-01-0001
29889-02-0001
29898-01-0001
29899-01-0001
29846-01-0001
我直接从SQL Server Management studio复制并注意到条目之间有换行符。那么,如何删除换行符呢? RTRIM
似乎无法解决问题。
虽然这仍然引起了一个问题,为什么左外联接不起作用?