﻿# 使用 SQL 語法 LIKE 敘述句時的注意事項

你知道如何在使用 LIKE 的時候，去查詢 %, \[, \], \_ 這類的萬用字元嗎？ 看看我寫的說明吧。

**1\. 比對規則**

    萬用字元

    %      任何含有零或多個字元的字串。

    \_      任何單一字元。

    \[ \]    在指定範圍 (\[a-f\]) 或集合 (\[abcdef\]) 中的任何單一字元。

    \[^\]    不在指定範圍 (\[^a-f\]) 或集合 (\[^abcdef\]) 中的任何單一字元。

    e.g.

    SELECT \* FROM table1 WHERE field LIKE '%\[1234567890\]%'

    代表任何有 0-9 的字元出現就算符合！

**2\. 若要 escape 特定字元可以用以下語法 ( 如：查詢字元中有百分比符號的字元）**

    這是放在萬用字元前面的字元，用來指示應該將萬用字元解譯成正規字元而不是萬用字元。escape\_character 是沒有預設值的字元運算式，只能得出一個字元。

    SELECT \* FROM table1 WHERE field LIKE '%!\[1234567890!\]%' ESCAPE '!'

    select \* from table1 where field1 like '%My\\\\\_Name%' escape '\\\\'

    這代表指定「逸出字元 (Escape Character)」為何，在 pattern 中出現在「逸出字元」後面的字元可以跳開「萬用字元」的功能!!

**Reference:**

    Using SQL Escape Sequences  
    [http://msdn2.microsoft.com/en-us/library/ms378045.aspx](http://msdn2.microsoft.com/en-us/library/ms378045.aspx)

    使用 SQL 逸出序列  
    [http://msdn2.microsoft.com/zh-tw/library/ms378045.aspx](http://msdn2.microsoft.com/zh-tw/library/ms378045.aspx)

    LIKE (Transact-SQL)  
    [http://msdn2.microsoft.com/zh-tw/library/ms179859.aspx](http://msdn2.microsoft.com/zh-tw/library/ms179859.aspx)
