No function matches the given name and argument types. You might need to add explicit type casts

Posted dongyaotou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No function matches the given name and argument types. You might need to add explicit type casts 相关的知识,希望对你有一定的参考价值。

今天在写项目的时候,遇到了一个比价头疼的问题:

ifnull.............

No function matches the given name and argument types. You might need to add explicit type casts

 

现在公司用的是postgrepsql数据库,自己用navicat连接的,屁颠屁颠的还当是mysql的函数语法来用的,扣了半天,原来才发现,pg数据库中根本就没有ifnull这个函数,

可以使用COALESCE函数代替。

这是改正确之后的sql语句:

SELECT tt.NAME, tt.sex, tt.idcardtype, tt.idcard, tt.mobile
    , tt.birthday, tt.ID, tt.vipid, tt.cardno, tt.cardtypename
    , tt.cardtypecode, tt.gradetypename, tt.status, tt.TYPE, tt.changecardno
    , tt.changecardnoflag, tt.PASSWORD, tt.accountmoneytype, tt.networktype, tt.usertype
    , tt.money, tt.points, tt.couponcnt, tt.relatedcnt,
    COALESCE ( tt.comname, tt.unitname )   as  unitname,
    tt.refereecode,
      tt.insuretype, tt.starteffectdate, tt.endeffectdate, tt.uniagentcode, tt.unisaleschannel
    , tt.unisalesbusitype
FROM (
    SELECT vip.NAME, vip.sex, vip.idcardtype, vip.idcard, vip.mobile
        , vip.birthday, acc.ID, acc.vipid
        , CASE 
            WHEN acc.cardno IS NULL THEN acc.changecardno
            ELSE acc.cardno
        END AS cardno, acc.cardtypename, acc.cardtypecode, acc.gradetypename, acc.status
        , acc.TYPE, acc.changecardno, acc.changecardnoflag, acc.PASSWORD, acc.accountmoneytype
        , acc.networktype, acc.usertype, mon.money, mon.points
        , CASE 
            WHEN cp.couponcnt IS NULL THEN 0
            ELSE cp.couponcnt
        END AS couponcnt
        , (
            SELECT COUNT(0)
            FROM vip_accountrelated T
            WHERE T.vipid = vip.ID
                AND T.accountid = acc.ID
                AND T.dr = 0
        ) AS relatedcnt
        , (
            SELECT t1.unit_name::VARCHAR
            FROM up_org_unit t1, up_org_unit_ext t2
            WHERE t1.unit_id = t2.unit_id
                AND t2.unit_uncode = vip.unitid
        ) AS unitname
        , (
            SELECT t1.unit_name::VARCHAR
            FROM up_org_unit t1, up_org_unit_ext t2
            WHERE t1.unit_id = t2.unit_id
                AND t2.unit_uncode = acc.sendunitid
        ) AS comname, acc.refereecode, vip.insuretype, acc.starteffectdate, acc.endeffectdate
        , acc.uniagentcode, acc.unisaleschannel, acc.unisalesbusitype
    FROM VIP_ACCOUNT acc, VIP_INFO vip, VIP_ACCOUNTMONEY mon, (
            SELECT ac.accountid, COUNT(0) AS couponcnt
            FROM VIP_ACCOUNTCOUPON ac, VIP_COUPON cou
            WHERE ac.couponcode = cou.code
                AND cou.status = 1
                AND ac.dr = 0
                AND cou.dr = 0
            GROUP BY ac.accountid
        ) cp
    WHERE acc.vipid = vip.ID
        AND acc.ID = mon.ID
        AND acc.ID = cp.accountid
        AND acc.dr = 0
        AND vip.dr = 0
        AND mon.dr = 0
) tt
ORDER BY tt.usertype OFFSET ( ?- 1 ) * ? 
    LIMIT ?

推荐一个网址:产看pgsql常用的函数:

https://www.cnblogs.com/personblog/p/11042105.html

以上是关于No function matches the given name and argument types. You might need to add explicit type casts 的主要内容,如果未能解决你的问题,请参考以下文章

no matching function transform?

VS2012 No exports were found that match the constraint

解决No version of NDK matched the requested version问题

Android studio :No version of NDK matched the requested version

Android studio :No version of NDK matched the requested version

No matching provisioning profile found: Your build settings specify a provisioning profile with the(