sqlserver 多個條件的 LIKE語句

2021-08-28 21:52:48 字數 557 閱讀 3046

如果表的乙個字段,如果有"你好" ,"你" ,"我們",則查詢出來這句

---------------------------------

select  *

from tablex

where f1 like '%[你好|你|我們]%'

最常見的寫法:where  a like '%xx%' or b like '%xx%' or c like '%xx%';  這種寫法查詢效率低,經過調查,下面的方法可以替代,並且效率高:

1、如果like的關鍵字相同:

where instr(nvl(a, '')||nvl(b,'')||nvl(c,''),   'xx') > 0

把要模糊查詢的字段先拼接起來,拼接時需要把null轉成『』,否則只要有乙個字段值是空,整個拼接的字串都成空了, 然後用instr 函式去過濾;

2、如果like的關鍵字不同:

where instr(a, 'xx') > 0  or  instr(b, 'yy') > 0  or instr(c, 'zz') > 0 

經過測試,這兩種方法都比like效率要高;

ORDER BY 多個條件

order子句按乙個或多個 最多16個 字段排序查詢結果,可以是公升序 asc 也可以是降序 desc 預設是公升序。order子句通常放在sql語句的最後。order子句中定義了多個字段,則按照欄位的先後順序排序。例 select productname,unitprice,unitinstock...

order by 多個條件

order子句按乙個或多個 最多16個 字段排序查詢結果,可以是公升序 asc 也可以是降序 desc 預設是公升序。order子句通常放在sql語句的最後。order子句中定義了多個字段,則按照欄位的先後順序排序。例 select productname,unitprice,unitinstock...

mysql 多個條件

order子句按乙個或多個 最多16個 字段排序查詢結果,可以是公升序 asc 也可以是降序 desc 預設是公升序。order子句通常放在sql語句的最後。order子句中定義了多個字段,則按照欄位的先後順序排序。select productname,unitprice,unitinstock f...