0

我将直接解决问题。

此查询应该是 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
4

3 回答 3

1

尝试像这样重写 WHERE 语句:

WHERE t.PFlag like '%No%'

希望能帮助到你。

于 2013-09-10T15:16:08.003 回答
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)

于 2013-09-10T15:19:57.037 回答
0

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

在这种情况下,存储在表中的真实数据将是No[space][space].

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

于 2013-09-10T15:12:52.237 回答