餅乾工坊
MS SQL 查詢簡體字/模糊查詢/不分大小寫查詢/多欄查詢/表A插入表B - 可列印版本

+- 餅乾工坊 (http://ninja.s12.xrea.com/mybb)
+-- 版面: 電腦網路 (http://ninja.s12.xrea.com/mybb/forumdisplay.php?fid=2)
+--- 版面: 網頁相關 (http://ninja.s12.xrea.com/mybb/forumdisplay.php?fid=13)
+--- 主題: MS SQL 查詢簡體字/模糊查詢/不分大小寫查詢/多欄查詢/表A插入表B (/showthread.php?tid=604)



MS SQL 查詢簡體字/模糊查詢/不分大小寫查詢/多欄查詢/表A插入表B - NINJA - 01-05-2011

查詢簡體字
在要搜尋的內容外面加 N
程式碼:
SELECT * FROM TableName WHERE [TableColumnName] = N'內容'
條件改為 N'內容' 就可以查到簡體內容了

模糊查詢
程式碼:
SELECT * FROM TableName WHERE [TableColumnName] = N'%內容%'
內容前後加上 % 就可以查詢部分內容

不分大小寫查詢 (例用 UPPER / UPPERCASE / LOWER / LOWERCASE 轉換後查詢)
程式碼:
SELECT * FROM TableName WHERE UPPER(TableColumnName) like UPPER(N'%STRING%')
TextArea儲存的資料無法用UPPER/LOWER查詢 (以下未實測)
可能要 select * from TableName Where textarea like STRING COLLATE Chinese_Taiwan_Stroke_CI_AS
CI:不分大小寫;_AS:區分腔調字; _CS:區分大小寫;_AI:不區分腔調字


多欄位查詢
程式碼:
SELECT * FROM TableName
WHERE UPPER(TableColumnName1 +'_'+ ISNULL(TableColumnName2,'') +'_'+ ISNULL(TableColumnName3,'')
LIKE UPPER(N'%FRANK%')
把 TableColumnName1~3 利用 + 連結成一個字串,再從字串裡用 Like 判斷
TableColumnName1 必填,非Null,故不使用ISNULL替換數值
TableColumnName2/TableColumnName3 非必填,可能Null,Null會導致加總出來的結果是Null
所以ISNULL裡第2個參數表示取代的值,若是數字加總就改 '0' ,字串則用空 '' 替換
利用底線連結,讓數字也會變成字串效果


表A插入表B
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
或者
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;