The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 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

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

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