gpt4 book ai didi

mysql - 如何比较MySQL中的用户设置变量?

转载 作者:行者123 更新时间:2023-11-29 07:26:11 25 4
gpt4 key购买 nike

我在这里偶然发现了之前提出并回答的问题:
How to use comparison operator for numeric string in MySQL?

我绝对同意最好提到的答案。但当我试图创造自己的答案时,它给我自己留下了一个问题。我试图选择第一个数字并将其转换为整数。接下来我想将该整数与一个数字(在问题的情况下为 3)进行比较。

这是我创建的查询:

SELECT experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1), UNSIGNED INTEGER) AS num
FROM employee
WHERE @num >= 3;

为了简单起见,假设experience里面的数据是:4-8

查询不会返回任何错误。但它也不返回数据。我知道可以将列内的数据与用户定义的变量进行比较。但是是否可以像我尝试做的那样将数据(在本例中为整数)与变量进行比较?

这纯粹是出于好奇和学习一些东西。

最佳答案

是的,派生表就可以了。下面的内部选择 block 是一个派生表。每个派生表都需要一个名称。就我而言,xDerived

策略是让派生表清理列名的使用。从派生 block 中出来的是一个名为 num 的干净列,外部选择可以免费使用它。

架构

create table employee
( id int auto_increment primary key,
experience varchar(20) not null
);

-- truncate table employee;
insert employee(experience) values
('4-5'),('7-1'),('4-1'),('6-5'),('8-6'),('5-9'),('10-4');

查询

select id,experience,num 
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;

结果

+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+

请注意,您的@num概念是错误的,但希望我解释了您上面的意思。

另外,我选择了 7 而不是 3,因为所有示例数据都会返回,而且我想向您展示它会起作用。

关于mysql - 如何比较MySQL中的用户设置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460315/

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