存储过程中的比较运算符 SQL
Comparison Operators in stored procedures SQL
希望能帮到你。
我有这个存储过程。工作正常,但我在存储过程中使用比较运算符时遇到问题。这里的重点是找到开过10000以上的车
我一直在寻找答案,但由于某种原因,找不到解决方案。
elimiter //
CREATE PROCEDURE DISTANCE (kilometerafstand INT)
BEGIN
SELECT bil.registreringsnummer, bil.kilometerstand, biltype.maerke, biltype.model
FROM bil
INNER JOIN biltype ON bil.id = biltype.id
WHERE bil.kilometerstand = kilometerafstand;
END;
//
call DISTANCE ( > 10000)
代码运行良好。这只是我调用 DISTANCE 中的运算符。
谢谢!
你不能有这样的比较运算符。可以多一个参数
operator varchar
并且您可以拥有自定义逻辑,例如 eq
、ne
、lt
、gt
,反之亦然。你可以写
where (operator = 'eq' and kilometerstand = kilometerafstand )
or (operator = 'gt' and kilometerstand > kilometerafstand
or ....
我只想将存储过程设计为采用两个参数,最小值和最大值:
DELIMITER //
CREATE PROCEDURE DISTANCE (in_min_km INT, in_max_km INT)
BEGIN
SELECT bil.registreringsnummer, bil.kilometerstand, biltype.maerke, biltype.model
FROM bil
INNER JOIN biltype ON bil.id = biltype.id
WHERE (bil.kilometerstand >= in_min_km or in_min_km IS NULL) AND
(bil.kilometerstand <= out_min_km or in_min_km IS NULL);
END;
//
CALL DISTANCE(10000, NULL) ;
希望能帮到你。
我有这个存储过程。工作正常,但我在存储过程中使用比较运算符时遇到问题。这里的重点是找到开过10000以上的车
我一直在寻找答案,但由于某种原因,找不到解决方案。
elimiter //
CREATE PROCEDURE DISTANCE (kilometerafstand INT)
BEGIN
SELECT bil.registreringsnummer, bil.kilometerstand, biltype.maerke, biltype.model
FROM bil
INNER JOIN biltype ON bil.id = biltype.id
WHERE bil.kilometerstand = kilometerafstand;
END;
//
call DISTANCE ( > 10000)
代码运行良好。这只是我调用 DISTANCE 中的运算符。
谢谢!
你不能有这样的比较运算符。可以多一个参数
operator varchar
并且您可以拥有自定义逻辑,例如 eq
、ne
、lt
、gt
,反之亦然。你可以写
where (operator = 'eq' and kilometerstand = kilometerafstand )
or (operator = 'gt' and kilometerstand > kilometerafstand
or ....
我只想将存储过程设计为采用两个参数,最小值和最大值:
DELIMITER //
CREATE PROCEDURE DISTANCE (in_min_km INT, in_max_km INT)
BEGIN
SELECT bil.registreringsnummer, bil.kilometerstand, biltype.maerke, biltype.model
FROM bil
INNER JOIN biltype ON bil.id = biltype.id
WHERE (bil.kilometerstand >= in_min_km or in_min_km IS NULL) AND
(bil.kilometerstand <= out_min_km or in_min_km IS NULL);
END;
//
CALL DISTANCE(10000, NULL) ;