SQL WHERE 語法的查詢條件

April 14, 2024

這篇文章是 C# LINQ to Entities 與 SQL 語法使用技巧 的重新整理再出發,收錄其中的 SQL WHERE 語法小技巧,並加入範例解說。

SQL 語法的查詢條件: 中文、CONCAT、大小寫

  • SQL 下查詢中文字串無資料、寫入中文變成問號 ? 時,可透過加入 N 在查詢字串前面,告知 SQL 的查詢語法需轉換為 Unicode 的形式。
  • 可使用 CONCAT 語法 (MS-SQL 語法為 + 號) 同時查詢多欄位的字串。
  • 測試資料:
-- 建立 TestTable 表格
CREATE TABLE TestTable (
    ID INT,
    LastName NVARCHAR(50),
    FirstName NVARCHAR(50)
);

-- 插入資料 (將中文轉為 Unicode)
INSERT INTO TestTable (ID, LastName, FirstName)
VALUES (1, N'王', N'小明'),
       (2, N'李', N'大同'),
       (3, 'Wang', 'XiaoHua'),
       (4, 'wang', 'DaRen');

  • 結合上方語法的查詢範例:
SELECT LastName, FirstName 
FROM dbo.TestTable 
WHERE LastName + FirstName LIKE N'%王小明%'
-- 結果 
-- LastName FirstName
-- 王       小明
  • MS-SQL 的查詢條件預設是沒有大小寫區別的,如果需要在查詢時區分大小寫的查詢結果,可以嘗試以下的定序 (Collation):
SELECT LastName, FirstName 
FROM TestTable 
WHERE LastName = 'Wang' COLLATE Latin1_General_CS_AS; -- 區分大小寫
-- 結果 
-- LastName FirstName
-- Wang     XiaoHua

SELECT LastName, FirstName 
FROM TestTable 
WHERE LastName = 'Wang' COLLATE Latin1_General_CI_AS; -- 不區分大小寫
-- 結果 
-- LastName FirstName
-- Wang     XiaoHua
-- wang     DaRen

參考資料