函数可能会降低查询的效率,还是关联个表比较巴适。--创建一张黑名单测试表 CREATE TABLE A( username VARCHAR2(100) ); --下面语句编造2,4,5....100的一些模拟黑名单 BEGIN FOR i IN 1..100 LOOP IF MOD(i,2)=0 THEN INSERT INTO a VALUES (i); END IF; END LOOP; END; SELECT * FROM a;--创建函数 CREATE OR REPLACE FUNCTION F_isBlackList(PRM_username VARCHAR2) RETURN NUMBER IS F_FLAG NUMBER(4); BEGIN SELECT CASE WHEN COUNT(1) > 0 THEN 1 ELSE 0 END INTO F_FLAG FROM A WHERE A.USERNAME = PRM_USERNAME; RETURN F_FLAG; END F_isBlackList; / --测试结果 SELECT F_isBlackList('1') FROM DUAL; SELECT F_isBlackList('2') FROM DUAL;
1、判断A表里面有几个这样子的收款帐号 SELECT SUM (CASE WHEN NAMEID = '传过来的系统转账的收款账号' THEN 1 ELSE 0 END) AS 有几个这样子的收款帐号 FROM 黑名单帐户的基础表A 2、判断A表里面是否有这样子的收款帐号(这是模糊判断你传过来的帐号) SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM A表 WHERE NAMEID LIKE '传过来的系统转账的收款账号' 3、如果帐号是确定的,并且A表里面不存储相同的帐号,那么直接COUNT(*)就行了: SELECT COUNT(*) FROM A表 WHERE NAMEID = '传过来的系统转账的收款账号'
CREATE TABLE A(
username VARCHAR2(100)
);
--下面语句编造2,4,5....100的一些模拟黑名单
BEGIN
FOR i IN 1..100 LOOP
IF MOD(i,2)=0 THEN
INSERT INTO a VALUES (i);
END IF;
END LOOP;
END;
SELECT * FROM a;--创建函数
CREATE OR REPLACE FUNCTION F_isBlackList(PRM_username VARCHAR2) RETURN NUMBER IS
F_FLAG NUMBER(4);
BEGIN
SELECT CASE WHEN COUNT(1) > 0 THEN 1 ELSE 0 END
INTO F_FLAG
FROM A
WHERE A.USERNAME = PRM_USERNAME;
RETURN F_FLAG;
END F_isBlackList;
/
--测试结果
SELECT F_isBlackList('1') FROM DUAL;
SELECT F_isBlackList('2') FROM DUAL;
SELECT
SUM (CASE WHEN NAMEID = '传过来的系统转账的收款账号'
THEN 1 ELSE 0
END) AS 有几个这样子的收款帐号
FROM 黑名单帐户的基础表A
2、判断A表里面是否有这样子的收款帐号(这是模糊判断你传过来的帐号)
SELECT
CASE WHEN COUNT(*) > 0
THEN 1 ELSE 0
END
FROM A表
WHERE NAMEID LIKE '传过来的系统转账的收款账号'
3、如果帐号是确定的,并且A表里面不存储相同的帐号,那么直接COUNT(*)就行了:
SELECT COUNT(*)
FROM A表
WHERE NAMEID = '传过来的系统转账的收款账号'