sql语句查询 字段内容 是否存在 如果不存在 显示结果

时间:2022-12-31 00:12:32
一个用户表t_user

以真实姓名real_name 为条件,查询 我随便打进去一些名字 是否存在 t_user 表中。

如果不存在,显示结果为不存在的real_name

如果存在则不显示结果。

如 表 t_user

id  real_name

1      A



我想输入的名字 A、B

怎么写语句 然后让 结果 只显示B的。。(A也进行过判断)

12 个解决方案

#1


SELECT '不存在' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM T_USER WHERE REGEXP_INSTR('A、B',REAL_NAME) > 0 

#2


WITH t_user AS (
    SELECT '1' id, 'A' real_name FROM dual
)
SELECT 'A' 
      FROM t_user t1 
      WHERE 'A' NOT IN (
          SELECT t2.real_name 
              FROM t_user t2
              WHERE REGEXP_INSTR('A、B',real_name) > 0) ;

#3


引用楼主 totsheng 的回复:
一个用户表t_user

以真实姓名real_name 为条件,查询 我随便打进去一些名字 是否存在 t_user 表中。

如果不存在,显示结果为不存在的real_name

如果存在则不显示结果。

如 表 t_user

id real_name

1 A



我想输入的名字 A、B

怎么写语句 然后让 结果 只显示B的。。(A也进行过判断)



REGEXP_INSTR 这是啥标识符?  

结果是显示名字,不是显示“不存在”

#4


with a as (select 'A' name from dual union all
           select 'B' name from dual ),
     b as (select a.name,b.real_name from a,t_user b where a.name=b.real_name(+))
 select a.name from b where b.real_name is null;

#5


with a as (select 'A' name from dual union all
           select 'B' name from dual )
 select a.name from a where a.name not in (select real_name from t_user);

#6


引用 3 楼 totsheng 的回复:
REGEXP_INSTR 这是啥标识符?   

结果是显示名字,不是显示“不存在”

REGEXP_INSTR是正则表达式函数.
结果显示名字,是显示B?这是个行转列的问题,偶没有简单的办法,除非自定义函数。

#7


[img=http://hi.csdn.net/space-66904-do-album-picid-670583-goto-down.html][/img]

#8


[img=http://hi.csdn.net/space-66904-do-album-picid-670583-goto-down.html][/img]

#9


sql语句查询 字段内容 是否存在 如果不存在 显示结果

#10


引用楼主 totsheng 的回复:
一个用户表t_user

以真实姓名real_name 为条件,查询 我随便打进去一些名字 是否存在 t_user 表中。

如果不存在,显示结果为不存在的real_name

如果存在则不显示结果。

如 表 t_user

id real_name

1 A



我想输入的名字 A、B

怎么写语句 然后让 结果 只显示B的。。(A也进行过判断)



select decode((select count(*) from t_user where real_name=&name),0,'不存在',null) from dual



SQL> select * from num_tb where id=20101001
  2  /

        ID
----------
  20101001
  20101001
  20101001

SQL> select decode((select count(*) from num_tb where id=&id),0,'不存在',null) from dual
  2  /
输入 id 的值:  2
原值    1: select decode((select count(*) from num_tb where id=&id),0,'不存在',null) from dual
新值    1: select decode((select count(*) from num_tb where id=2),0,'不存在',null) from dual

DECODE
------
不存在

SQL> 















#11


wkc168,按我的理解,楼主是想要输入一个字符串,里面包含多个ID,然后用SQL把这些ID在表中不存在的显示出来。

#12



with t_user as ( -- 用户表
select 1 id, 'a' realname from dual
),
t2 as ( -- 拆分输入的名字
select  'a,b' inputname, rownum rn from dual connect by rownum<=length('a,b')
),
t3 as (
select substr(inputname, rn, instr(inputname||',',',',rn+1)-1) inputname
from t2 where substr(','||inputname,rn,1)=','
)
select inputname noname from t3 where inputname not in (select realname from t_user)
/

NONAME
------------
b

#1


SELECT '不存在' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM T_USER WHERE REGEXP_INSTR('A、B',REAL_NAME) > 0 

#2


WITH t_user AS (
    SELECT '1' id, 'A' real_name FROM dual
)
SELECT 'A' 
      FROM t_user t1 
      WHERE 'A' NOT IN (
          SELECT t2.real_name 
              FROM t_user t2
              WHERE REGEXP_INSTR('A、B',real_name) > 0) ;

#3


引用楼主 totsheng 的回复:
一个用户表t_user

以真实姓名real_name 为条件,查询 我随便打进去一些名字 是否存在 t_user 表中。

如果不存在,显示结果为不存在的real_name

如果存在则不显示结果。

如 表 t_user

id real_name

1 A



我想输入的名字 A、B

怎么写语句 然后让 结果 只显示B的。。(A也进行过判断)



REGEXP_INSTR 这是啥标识符?  

结果是显示名字,不是显示“不存在”

#4


with a as (select 'A' name from dual union all
           select 'B' name from dual ),
     b as (select a.name,b.real_name from a,t_user b where a.name=b.real_name(+))
 select a.name from b where b.real_name is null;

#5


with a as (select 'A' name from dual union all
           select 'B' name from dual )
 select a.name from a where a.name not in (select real_name from t_user);

#6


引用 3 楼 totsheng 的回复:
REGEXP_INSTR 这是啥标识符?   

结果是显示名字,不是显示“不存在”

REGEXP_INSTR是正则表达式函数.
结果显示名字,是显示B?这是个行转列的问题,偶没有简单的办法,除非自定义函数。

#7


[img=http://hi.csdn.net/space-66904-do-album-picid-670583-goto-down.html][/img]

#8


[img=http://hi.csdn.net/space-66904-do-album-picid-670583-goto-down.html][/img]

#9


sql语句查询 字段内容 是否存在 如果不存在 显示结果

#10


引用楼主 totsheng 的回复:
一个用户表t_user

以真实姓名real_name 为条件,查询 我随便打进去一些名字 是否存在 t_user 表中。

如果不存在,显示结果为不存在的real_name

如果存在则不显示结果。

如 表 t_user

id real_name

1 A



我想输入的名字 A、B

怎么写语句 然后让 结果 只显示B的。。(A也进行过判断)



select decode((select count(*) from t_user where real_name=&name),0,'不存在',null) from dual



SQL> select * from num_tb where id=20101001
  2  /

        ID
----------
  20101001
  20101001
  20101001

SQL> select decode((select count(*) from num_tb where id=&id),0,'不存在',null) from dual
  2  /
输入 id 的值:  2
原值    1: select decode((select count(*) from num_tb where id=&id),0,'不存在',null) from dual
新值    1: select decode((select count(*) from num_tb where id=2),0,'不存在',null) from dual

DECODE
------
不存在

SQL> 















#11


wkc168,按我的理解,楼主是想要输入一个字符串,里面包含多个ID,然后用SQL把这些ID在表中不存在的显示出来。

#12



with t_user as ( -- 用户表
select 1 id, 'a' realname from dual
),
t2 as ( -- 拆分输入的名字
select  'a,b' inputname, rownum rn from dual connect by rownum<=length('a,b')
),
t3 as (
select substr(inputname, rn, instr(inputname||',',',',rn+1)-1) inputname
from t2 where substr(','||inputname,rn,1)=','
)
select inputname noname from t3 where inputname not in (select realname from t_user)
/

NONAME
------------
b