经典的sql

以下是一些以前用过的SQL ,总也记不住,就写下来了,有几个很好用,分享一下:

1.取年
SELECT  CreateDate,CAST(YEAR(CreateDate) AS VARCHAR(4)) + '-' +
        CAST(MONTH(CreateDate) AS VARCHAR(2)) + '-' +
        CAST(DAY(CreateDate) AS VARCHAR(2)) + char(13)+char(10) + DATEPART(HH,CreateDate) FROM s_log
结果:2006-06-01
       
SELECT  CAST(DATEPART(HH,CreateDate)AS VARCHAR(4)) + ':'
        +  CAST(DATEPART(MI,CreateDate)AS VARCHAR(4))+':'
        +  CAST(DATEPART(SS,CreateDate)AS VARCHAR(4)) FROM s_log

2. 取8位时间   16:30:28
SELECT  CreateDate, CONVERT(VARCHAR(8),CreateDate,108)
    FROM s_log

3.取10位年月日   2006-10-01
SELECT  CreateDate, CONVERT(VARCHAR(10),CreateDate,126)
    FROM s_log

当前时间 getdate()

4.回车换行
char(13)+char(10)

5.  cast用法   
        CAST(YEAR(P.Birthday) AS VARCHAR(4)) + '-' +
        CAST(MONTH(P.Birthday) AS VARCHAR(2)) + '-' +
        CAST(DAY(P.Birthday) AS VARCHAR(2)) as 出生日期


6.case 语句

CASE C5.Des  WHEN '初领' THEN '√'  
          END AS [初领],  
CASE C5.Des  WHEN '补证' THEN '√'  
          ELSE '' END AS [补证],  
[K1]=   
  CASE    
  WHEN  P_RegistPractitioner.TitleCardType LIKE '%K1%' THEN '√'  
  END,  
[K2]=  
  CASE    
  WHEN  P_RegistPractitioner.TitleCardType LIKE '%K2%' THEN '√'  
  END

7. 联接
 分类:内联接 ,外联接,交叉联接

        1.内联接: 典型的联接运算,使用像 = 或 <> 之类的比较运算符,包括相等联接和自然联接。

        2.外联接: 外联接可以是左向外联接、右向外联接或完整外部联接。
           假设在 city 列上联接 authors 表和 publishers 表。
                结果只显示在出版商所在城市居住的作者
           2.1.左向外联接 :在结果中包括所有的作者,而不管出版商是否住在同一个城市
                 USE pubs
                 SELECT a.au_fname, a.au_lname, p.pub_name
                 FROM authors a LEFT OUTER JOIN publishers p
                 ON a.city = p.city
                 ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
   
           2.2.右向外联接 :结果中包括所有的出版商,而不管城市中是否还有出版商居住
                 USE pubs
                 SELECT a.au_fname, a.au_lname, p.pub_name
                 FROM authors AS a RIGHT OUTER JOIN publishers AS p
                 ON a.city = p.city
                 ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

           2.3.完整外部联接: 在结果中包括所有作者和出版商,而不管城市中是否有出版商或者出版商
                            是否住在同一个城市
                USE pubs
                SELECT a.au_fname, a.au_lname, p.pub_name
                FROM authors a FULL OUTER JOIN publishers p
                ON a.city = p.city
                ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC

      3.交叉联接 :返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

                 例如,下面的内联接检索与某个出版商居住在相同州和城市的作者:

               USE pubs
               SELECT a.au_fname, a.au_lname, p.pub_name
               FROM authors AS a INNER JOIN publishers AS p
               ON a.city = p.city
               AND a.state = p.state
               ORDER BY a.au_lname ASC, a.au_fname ASC

 8.查询时修改字段类型
               cast(moneydate as varchar) as '贷款日期'

 
9. 值为空时返回0
    COALESCE(CargoNum,0)

10. NULLIF
    如果两个指定的表达式相等,则返回空值。

11. UPDATE  FROM
UPDATE T_StoreInfo
SET PositionName  =  A.PositionName
FROM  T_StoreInfo T,
(SELECT HouseID+'-'+PlaceID+'-'+PositionID AS PositionName,StorageID FROM T_Storage)  A
WHERE T.StorageID = A.StorageID

12. 修改列长度
alter  table  T_OperateLog
ALTER COLUMN   [Description]  nvarchar(1000)

13.数据库备份
BACKUP  DATABASE  ZYDangerous
to disk='d:\ZYDangerous20070822.bak'


14. NULLIF
如果两个指定的表达式相等,则返回空值
SELECT NULLIF(money, 0.00)
FROM budgets

15.COALESCE
返回其参数中第一个非空表达式
SELECT COALESCE(heigth,0)+COALESCE(width,0)
FROM wages

16. DATENAME
返回代表指定日期的指定日期部分的字符串。
语法
DATENAME ( datepart , date )

17.DATEPART
返回代表指定日期的指定日期部分的整数
语法
DATEPART ( datepart , date )

18. CAST 和 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。

使用 CAST:
CAST ( expression AS data_type )

使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])


19.SQL 用 0 补位 的SQl语句 

select right ('00000'+XKZID,5) as XKZID   from WXTemplicence     原来是 1 ,2,3......10,11 现在是

00001,00002,00003.......00010,00011.不够五位的, 左边补零;

select  left (XKZID+'00000',5) as XKZID   from WXTemplicence     原来是 1 ,2,3......10,11 现在是

10000,20000,30000.......10000,11000.不够五位的, 右边补零.

select cast(yuangongbh as int) from jxyuangongxx where jiaxiaobh='6101045003' 把原来是字符型的转化为整型,

去掉前面的 “0”,如“0013”变为“13”

select '0000'+ id  from table

20. ISNULL
使用指定的替换值替换 NULL
下面的示例查找所有书的平均价格,用值 $10.00 替换 titles 表的 price 列中的所有 NULL 条目USE pubs
GO
SELECT AVG(ISNULL(price, $10.00))
FROM titles
GO


21. 从数据库里面取随机的n行
SELECT TOP 10 * FROM dbo.T_EnterStorage
ORDER BY NEWID()

22.删两表同记录

delete from a where bm exists (select bm from b where a.bm=b.bm and a.mc=b.mc)

23.增加列
alter table tbl_wms_TransferHeader
Add [fIsCreateASN] bit not null default(0),
fUserDef01 varchar(50) null,
fUserDef02 varchar(50) null,
fUserDef03 varchar(50) null


 

原文地址:https://www.cnblogs.com/sunxi2003/p/1515449.html