我试图实现一个代码写在mysql到postgres返回真或假存在的元组,然而,我还没有能够做到这一点成功。
现在的代码是在mysql中没有问题的代码,但是,我想在postgress中运行它。如何实现等价性
CREATE FUNCTION searchUser(inPhone VARCHAR(13))
RETURNS bool
BEGIN
RETURN (CASE WHEN EXISTS(
SELECT 1
FROM client
WHERE phone=inPhone)
THEN 1 ELSE 0 END );
END//
我已经尝试在postgres中这样做,但它不工作,抛出sitaxix错误
CREATE FUNCTION searchUser(inPhone VARCHAR(13))
BEGIN
RETURN CASE WHEN EXISTS
(SELECT 1 FROM client WHERE phone=inPhone)
THEN '1'
ELSE '0';
END;
$$ LANGUAGE plpgsql;
3条答案
按热度按时间gcuhipw91#
对于这样一个简单的函数,你不需要plpgsql。SQL足够好,速度更快,并且可以由计划器优化。
或者就像@Bergi问的那样,使用EXISTS:
再次使用SQL语言
2vuwiymt2#
您也可以使用Postgres返回
BOOLEAN
:测试结果:
您甚至可以通过以下方式进一步简化该功能:
cigdeys33#
你可以这样做:
fiddle demo