加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

php – 我可以在列类型INT和VARCHAR之间左键连接吗?

发布时间:2021-03-06 16:23:56 所属栏目:编程 来源:网络整理
导读:我被赋予了查看MSSQL查询问题的任务,我不是SQL专业版!这不是我的强项. 我在2个不同的数据库中有2个表;忽略表引用,因为我已将它们从此查询中删除.我的问题是PERSON_CODE是一个表中的整数值,另一个是VARCHAR,我将运行此查询并将数据直接解析到Users表中,同时

我被赋予了查看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)并解决问题.

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读