我已经被赋予查看MSSQL查询问题的任务,并且我不是SQL专家!这不是我的特长。我可以在列类型INT和VARCHAR之间左连接吗?
我在2个不同的数据库中有2个表;忽略表引用,因为我把它们从这个查询中剥离出来。我的问题是PERSON_CODE是一个表中的整数值,另一个是VARCHAR,我将运行此查询并将数据直接解析到Users表中,同时用PHP对哈希密码进行哈希处理。
但是,由于Users表中的某些字段是像Jane,John这样的字符名称,学生中的所有值都是整数,因此我收到错误是因为数据类型。
下面是到目前为止,我已经建立了查询 - 这是非常简单的:
SELECT Students.PERSON_CODE, Students.PASSWORD
FROM Students
LEFT JOIN users
ON Students.PERSON_CODE = users.username
WHERE Students.PERSON_CODE > '0'
AND users.username IS INTEGER <- How do i do this.
我需要知道,如果有忽略不属于users表中的整数,所以我可以得到字段的方式学生表中只有整数结果。
下面是完整的解决方案。谢谢Preveen。
SELECT Students.PERSON_CODE, Students.PASSWORD
FROM Students
LEFT JOIN users
ON Students.PERSON_CODE = CASE
When ISNUMERIC(users.username) = 1 THEN users.username
END
WHERE Students.PERSON_CODE > '0'
新更新
,因为我希望查询显示了使用PERSON_COde /用户名作为标识符,不是两个表中唯一行我已经做了一些改动。
SELECT Students.PERSON_CODE, Students.PASSWORD
FROM Students
LEFT JOIN users
ON cast(Students.PERSON_CODE as varchar(15)) = users.username
WHERE users.username = cast(Students.PERSON_CODE as varchar(15))
在某种程度上,我需要一个完整的outter加入基本上我认为。
Table Students_________ Table users
PERSON_CODE____________ username
1______________________ 1
2______________________ 2
3______________________ 3
4______________________
5______________________
6______________________
7______________________
8______________________
有了这个查询然后我想显示的结果4,5,6,7,8
谢谢!
感谢您编辑Bhadra,对不起,我忘了在删除最后一行的第二条评论后更改SQL!卫生署。 –
是你的问题在这里回答? http://stackoverflow.com/questions/5064977/detect-if-value-is-number-in-mysql – Bokw
你应该把'PERSON_CODE''0''改成'PERSON_CODE> 0',因为它是一个整数 – NickyvV