我被赋予了查察MSSQL查询题目的使命,我不是SQL专业版!这不是我的刚强.
我在2个差异的数据库中有2个表;忽略表引用,由于我已将它们以后查询中删除.我的题目是PERSON_CODE是一个表中的整数值,另一个是VARCHAR,我将运行此查询并将数据直接理会到Users表中,同时在PHP中散列暗码.
可是,因为Users表中的某些字段是Jane,John这样的字符名称,而且Students中的全部值都是整数,因此我会因数据范例而收到错误.
下面是我到今朝为止构建的查询 – 它很是简朴:
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表中不是整数的字段,以是我只能从Students表中得到整数功效.
以下是完备的办理方案.感谢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 / username作为标识符来表现不在两个表中的行.
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))
在某种水平上,我以为我必要一个完备的外部插手.
Table Students_________ Table users
PERSON_CODE____________ username
1______________________ 1
2______________________ 2
3______________________ 3
4______________________
5______________________
6______________________
7______________________
8______________________
有了这个查询,我想表现功效4,5,6,7,8
感谢!
最佳谜底
这对我来说好像是最好的办理方案:
SELECT Students.PERSON_CODE,Students.PASSWORD
FROM Students
LEFT JOIN users
ON cast(Students.PERSON_CODE as varchar(10)) = users.username
WHERE Students.PERSON_CODE > 0
这样您就不必要搜查username是否是整数.您只需在较量之前将PERSON_CODE转换为varchar(10)并办理题目.
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|