一行SQL代碼能做什么?
SQL專欄 3000字!5大SQL數(shù)據(jù)清洗方法!
SQL一行代碼其實有很多很多,一些常見的比如:
SELECT * FROM TableName
INSERT INTO TableName VALUES(...)
TRUNCATE TABLE TableName .....
這些就沒什么意思了,我們來給大家看一些比較“高級”的。
SELECT * INTO Customers_bak FROM Customers WHERE 1=2;
或者
SELECT TOP 0 * INTO Customers_bak FROM Customers;可以得到與Customers 表結(jié)構(gòu)一樣的Customers_bak ,而且Customers_bak 中沒有數(shù)據(jù)。
SELECT TOP 1 1 FROM Customers結(jié)果如下:

注:第一個1是查詢是否存在一條記錄,第二個1就是單純的數(shù)值1。
表Customers中數(shù)據(jù)如下:

現(xiàn)在隨機獲取一行數(shù)據(jù)
SELECT TOP 1 * FROM Customers ORDER BY NEWID();結(jié)果如下:


SELECT TOP 5 * FROM (SELECT TOP 10 * FROM Person ORDER BY ID ) a ORDER BY ID DESC(提示:可以左右滑動代碼)
結(jié)果如下:

SELECT ISNULL(Price,0) FROM Orders注:Price為空值時會默認賦0
6、將日期轉(zhuǎn)換成文本格式
SELECT CONVERT(VARCHAR(10),CreateDate,120) FROM Students注:CreateDate為帶時間的完整日期格式,執(zhí)行后會得到不帶時間的字符串,如'2020-05-31'
SELECT CAST(Amount as NUMERIC(18,2)) FROM Orders注:Amount是帶2位以上的小數(shù)格式,轉(zhuǎn)換后的小數(shù)會四舍五入。
8、刪除重復(fù)記錄(除了主鍵不同,其他字段均相同)
表Person數(shù)據(jù)如下:

刪除其中除ID以為其他都重復(fù)的記錄
DELETE FROM Person WHERE ID NOT IN (SELECT MAX(ID) FROM Person GROUP BY Name,Age,Sex,Phone)刪除后結(jié)果如下:

9、查詢當(dāng)前數(shù)據(jù)庫中的所有表名
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
10、查詢某個表里的所有列名
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('Person')
11、將B表中的字段內(nèi)容更新到A表
UPDATE A SET A.Name=(SELECT B.Name FROM B WHERE A.ID=B.ID)12、獲取笛卡爾積
SELECT A.*,B.* FROM A,B13、按姓氏筆畫多少排序
SELECT Name FROM Person ORDER BY Name Collate Chinese_PRC_Stroke_CI_AS結(jié)果如下:

注:默認是直接按姓氏拼音排序
14、延遲3秒執(zhí)行查詢語句
WAITFOR DELAY '0:0:3' SELECT * FROM Person
15、將查詢結(jié)果轉(zhuǎn)換為XML格式
SELECT * FROM Person WHERE ID=1 FOR XML PATH
16、將小數(shù)轉(zhuǎn)換成百分數(shù)
SELECT CAST(CAST((0.8888*100) AS NUMERIC(18,2)) as VARCHAR(20)) + '%'
17、處理除數(shù)為0
SELECT ISNULL(A/NULLIF(B,0),1) FROM TABLEA
或
SELECT CASE WHEN B=0 THEN 1 ELSE A/B END FROM TABLEA注:A為任意數(shù)值,B為0
下次想到一些好用的SQL代碼再分享給大家,如果你平常也有一些好用的SQL代碼,歡迎可以在留言區(qū)分享一下。

推薦閱讀
歡迎長按掃碼關(guān)注「數(shù)據(jù)管道」
