使用SQL語句查詢是開發中常做的事,在實際的情況中,可能會遇到,查詢包含某個關鍵詞的所有行,而這個關鍵詞正好也是SQL SERVER的關鍵詞。 下麵有一張表Member,有如下的數據: 假如需要查詢名字中包含%字元的數據,首先我們會有這樣的查詢語句: SELECT * FROM dbo.Member ...
使用SQL語句查詢是開發中常做的事,在實際的情況中,可能會遇到,查詢包含某個關鍵詞的所有行,而這個關鍵詞正好也是SQL SERVER的關鍵詞。
下麵有一張表Member,有如下的數據:
假如需要查詢名字中包含%字元的數據,首先我們會有這樣的查詢語句:
SELECT * FROM dbo.Member WHERE Name LIKE '%%%'
但是由於%在SQL SERSER中是關鍵字,此時需要轉義,沒有轉義的寫法可以如下:
SELECT * FROM dbo.Member WHERE Name LIKE '%[%]%'
轉義的寫法如下,使用ESCAPE指定轉義符:
SELECT * FROM dbo.Member WHERE Name LIKE '%~%%' ESCAPE '~'
在項目中使用Entity Framework時,比如名稱是否包含%,則DBContext.Set<Member>().Where(m => m.Name.Contains("%")),然後使用SQL Profiler可以看出Entity Framework生成的SQL是使用了~作為轉義符。開發中如果是我們手寫SQL(非ORM自動生成),轉義符可以自由指定,例如:\