部分常用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]