有谁知道为什么我没有得到这个查询的任何结果?

时间:2013-09-10 15:02:46

标签: sql sql-server-2008 sql-server-2005

我会直接解决问题。

此查询应该是PFlag设置为“否”的记录列表

然而,当我运行它时,我得到空白结果。

如果我删除WHERE子句(其中pFlag ='No'),我会得到结果。

因此,WHERE子句出现了问题。

知道出了什么问题吗?

这是我目前正在运行的代码。

SELECT DISTINCT t.username,
       lg.Email,
       lg.fullname, 
       c.CourseName, 
       l.location, 
       d.trainingDates, 
       d.trainingTime, 
       t.processedFlag,
       i.instructorName 
FROM tblTrainings t 
       INNER JOIN tblCourses c on t.courseId = c.courseId
       INNER JOIN tblLocations l on t.locationId = l.LocationId
       INNER JOIN tblTrainingDates d on t.dateid=d.dateid
       INNER JOIN tblCourseInstructor ic on c.courseId = ic.CourseId
       INNER JOIN tblInstructors i on ic.instructorId = i.instructorId
       INNER JOIN tblLogin lg on t.username = lg.username
       WHERE t.PFlag = 'No'
 ORDER BY lg.fullname DESC

看起来很简单。

提前多多感谢

PFlag
0x59006500
0x59006500
0x59006500

3 个答案:

答案 0 :(得分:1)

尝试重写WHERE语句,如下所示:

WHERE t.PFlag like '%No%'
希望它有所帮助。

答案 1 :(得分:0)

检查表格列定义。 如果字段pFlag的类型为CHAR且具有特定长度,例如CHAR[4],然后该列中的任何字符串最多将填充4个字符。

在这种情况下,表格中存储的实际数据将为No[space][space]

如果是这种情况,请将您的列类型转换为VARCHAR,并使用trim()对该列进行更新。

答案 2 :(得分:0)

尝试像@ user2065377那样运行它:

WHERE t.PFlag like '%No%'

另外:

运行查询不带 where子句并添加此列:SELECT ...., CAST(t.PFlag AS VARBINARY(4))并查看不同的值。

也许你有空格(不可见)字符

还会将结果粘贴到:

select distinct ( t.PFlag) from .....

修改

SELECT CONVERT(VARCHAR(100), 0x59006500)收益Y

Yes字在哪里?

即使如此,它也不是普通的Y:

SELECT CASE WHEN CONVERT(nVARCHAR(100), 0x59006500)='Y' THEN 1 ELSE 0 END(收益率0)