加入不按预期行事

时间:2015-03-19 21:13:15

标签: sql-server tsql

我有以下查询

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似乎无法解决问题。

虽然这仍然引起了一个问题,为什么左外联接不起作用?

0 个答案:

没有答案