部分常用SQL语句和函数
//增删改 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) DELETE FROM 表名称 WHERE 列名称 = 值 //EXISTS 可判断查询的结果是否存在 返回true false SELECT * FROM [dbo].[Students] WHERE EXISTS (SELECT * FROM [dbo].[Class] WHERE ID = 123 ); //如果123不存在,则不查询students表 也可用 NOT EXISTS 不存在则显示,存在则不显示 //可直接拼接获取到的内容至一列,但需要varchar类型,int为计算而不是拼接 select Ename+'---'+ComplainType as ddd from Complaints select len(Ename) from Complaints //获取字段内容的长度 select RAND() //获取随机数—— 0.686986758937688 select floor(rand()*100) //floor为向下取整 select GETUTCDATE(); //获取国际标准时区的时间 select CONVERT(nvarchar(20),getdate(),120) select DATEDIFF(month, '2019-02-01', '2019-05-30') //时间间隔,month为差了几个月,都为向下取整 select DATEADD(hour, 5, '2019-02-28 23:33:00') //时间增加 select DATEPART(year,'2019-05-03') //返回时间的年份 int类型 select DATEPART(yy,'2019-05-03') select DATEPART(hh,getdate()) //获取小时数(24小时)17.05分就是17 select DATENAME(year,getdate()) //返回时间的年份 varchar类型 select year(getdate()) //一样获取日期,但只有年月日[year(),month(),day()],没有时分秒 //返回指定字符串在字符串中的位置,返回的为整数(从1开始)。如果不存在则返回0。因为是指定字符串所以效率比PATINDEX高 select CHARINDEX('cc', 'asdfccdd'); //返回5 select CHARINDEX('ff', 'ffase123',5); //从第五位开始查找,没找到则是0 //PATINDEX的字符串可加通配符%,也就是可以模糊查询。如果不加则需要前后都相同才会返回值 select PATINDEX('cc', 'aabbccdd'); //返回0 select PATINDEX('%cc', 'aabbccdd'); //返回0 可用于查询是否是xxx结尾 或开始 select PATINDEX('%cc%', 'aabbccdd'); //返回5 select PATINDEX('cc', 'cc'); //返回1 //STUFF 可用于删除指定长度的字符,并可以在指定的起点处插入另一组字符 STUFF(列名,开始位置,长度,替代字符串) 返回类型是一个字符串型 select STUFF('asdccbb',4,2,'') //返回asdbb 删除了cc select STUFF('asdccbb',4,2,'66') //返回as66cbb //SUBSTRING 用于截取指定长度的字符串 SUBSTRING(字符串,开始位置,长度) select SUBSTRING('abcdefg',3,2) //返回cd //LEFT() 返回字符串中从左边开始指定个数的字符 RIGHT()从右边开始 select LEFT('ASDFG',2); //返回AS select RIGHT('ASDFG',2); //返回FG //LTRIM() 删除前面的空格 RTTIM() 删除后面的空格 select LTRIM(' ASD DF '); //返回ASD DF select RTRIM(' ASD DF '); //返回 ASD DF //UPPER() 小写转大写 LOWER() 大写转小写 select UPPER('fff'); //返回FFF select LOWER('DDd'); //返回ddd //REPLACE(str,from_str,to_str) 用字符串替换所有指定的字符串 select REPLACE('jklasdaaddc','a','2'); //返回jkl2sd22ddc select REPLACE('测试sql,测试sql!!','测试','test '); //返回test sql,test sql!! //REPLICATE 以指定的次数重复字符表达式 select REPLICATE('ABC',3); //返回ABCABCABC //SPACE(N) 返回指定个数的空格 select SPACE(5); //返回 5个空格 select 'test'+SPACE(3)+'OK'; //返回test OK //REVERSE(str) 用于倒置字符串中的内容位置 select REVERSE('12345678'); //返回87654321 //CAST 转换数据类型 select CAST('123' AS int); //返回123的数字类型 select CAST(666 AS nvarchar(10)); //返回666的字符串 //CASE() 将满足条件的表达式,转换为对应的结果 SELECT *, CASE WHEN score < 60 THEN '不合格' WHEN score >=60 and score <= 100 THEN '合格' ELSE '0分' END FROM [dbo].[Score]