SQLServer常用语法

(持续更新)用到哪儿,更新到哪儿!

1、显示行号
select row_number() over (order by fid) 行号,* from T_NATION;

2、字段不为空
select * from T_EMP where len(title)>1;

3、order by 字段为nvarchar,varchar使得排序无效    --将字段转换成int类型即可
select convert(int,fid) fid,fname from T_HIS_FEETYPE group by fid,fname  ORDER BY convert(int,fid) ASC

4、转换varchar/nvarchar值‘000000011052400001’时溢出整数列搜索。超过了其最大整数值    --
select convert(bigint,orderno) orderno,typename,OPERATOR from T_HIS_CARDTYPE
where OPERATOR='000000011052400001' group by orderno,typename,OPERATOR order by convert(bigint,orderno) ASC

5、EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

      INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

    create table t1(id int,mark char(2))  
    go  
    create table t2(id int,mark char(2))  
    go  
    insert into t1  
        select 1,'t1' union all  
        select 2,'t2' union all  
        select 3,'t3' union all  
        select 4,'t4'  
    go  
    insert into t2  
        select 2,'t2' union all  
        select 3,'m3' union all  
        select 5,'m5' union all  
        select 6,'t6'  
    go  
    select * from t1  
    EXCEPT  
    select * from t2  
    go  
    select * from t1  
    INTERSECT  
    select * from t2  
    go  
      
    --EXCEPT结果集为  
    --1 t1  
    --3 t3  
    --4 t4  
      
    --INTERSECT结果集为  
    --2 t2  

6、LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name


7、RIGHT [OUTER] JOIN 产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name


8、FULL [OUTER] JOIN 产生A和B的并集。对于没有匹配的记录,则会以null做为值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 
你可以通过is NULL将没有匹配的值找出来:
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null

9、CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积。如本例会产生4*4=16条记录,在开发过程中我们肯定是要过滤数据,所以这种很少用。
SELECT * FROM TableA CROSS JOIN TableB

10、简单的说row_number()从1开始,为每一条分组记录返回一个数字;
ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值