4、SQL问答题
SELECT * FROM TABLE

SELECT * FROM TABLE
WHERE NAME LIKE '%%' AND ADDR LIKE '%%'
AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'
OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )
的检索结果为何不同?5、SQL问答题
表结构:
1、 表名:g_cardapply
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_applydate bigint 8;//申请日期
g_state varchar 2;//申请状态
2、 表名:g_cardapplydetail
字段(字段名/类型/长度):
g_applyno varchar 8;//申请单号(关键字)
g_name varchar 30;//申请人姓名
g_idcard varchar 18;//申请人身份证号
g_state varchar 2;//申请状态
其中,两个表的关联字段为申请单号。
题目:
1、 查询身份证号码为440401430103082的申请日期
2、 查询同一个身份证号码有两条以上记录的身份证号码及记录个数
3、 将身份证号码为440401430103082的记录在两个表中的申请状态均改为07
4、 删除g_cardapplydetail表中所有姓李的记录

解决方案 »

  1.   

    1、
    for example:
    ------------------------------------------------------------------------
    declare @t table(code varchar(20))
    insert into @t select nullselect * from @t
    /*
    code                 
    -------------------- 
    NULL(所影响的行数为 1 行)
    */
    select * from @t where code like '%%'
    /*
    code                 
    -------------------- (所影响的行数为 0 行)
    */
      

  2.   

    第一题不同可能因为字段有NULL的
      

  3.   

    create table g_cardapply(
    g_applyno nvarchar(8),
    g_applydate bigint,
    g_state nvarchar(2)
    )insert into g_cardapply 
    select 'a001',20050101,'1'
    union all
    select 'a002',20050202,'2'
     create table g_cardapplydetail(
    g_applyno nvarchar(8),
    g_name nvarchar(30),
    g_idcard nvarchar(18),
    g_state nvarchar(2)
    )insert into g_cardapplydetail
    select 'a001','A','440401430103082','1'
    union all
    select 'a002','B','440401430103083','2'
    union all
    select 'a003','B','440401430103083','2'
    union all
    select 'a004','B','440401430103083','2'--question1
    select a.g_applydate from  g_cardapply a
    inner join g_cardapplydetail b on a.g_applyno=b.g_applyno
    and b.g_idcard='440401430103082'--question2
    select g_idcard,count(1) from g_cardapplydetail
    group by g_idcard having count(1)>2--question3
    update g_cardapply set g_state='07' where g_applyno in(
      select g_applyno from  g_cardapplydetail where g_idcard='440401430103082'
    )
    update g_cardapplydetail set g_state='07' where g_idcard='440401430103082'--question4
    delete from g_cardapplydetail where g_name like N'李%'drop table g_cardapply,g_cardapplydetail
      

  4.   

    第一题不同可能因为字段有NULL的
      

  5.   

    1.oracle 和 ms sql的写法是不是不一样?2.将身份证号码为440401430103082的记录在两个表中的申请状态均改为07
    这题需要使用事务吗?
      
    谢谢大家。