gpt4 book ai didi

php - 我可以在列类型 INT 和 VARCHAR 之间进行 LEFT JOIN 吗?

转载 作者:可可西里 更新时间:2023-11-01 06:40:31 25 4
gpt4 key购买 nike

我的任务是调查 MSSQL 查询的问题,但我不是 SQL 专家!这不是我的强项。

我在 2 个不同的数据库中有 2 个表;忽略表引用,因为我已将它们从该查询中删除。我的问题是 PERSON_CODE 在一个表中是整数值,在另一个表中是 VARCHAR,我将运行此查询并将数据直接解析到用户表中,同时在 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

这样你就不需要检查用户名是否是一个整数。您只需在比较之前将 PERSON_CODE 转换为 varchar(10) 即可解决问题。

关于php - 我可以在列类型 INT 和 VARCHAR 之间进行 LEFT JOIN 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21303189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com