我想在包含名字和姓氏的列中找到兩個名字,例如'name1''name2'。
WHERE ContactName IN('name1%','name2%'); < - 不適用於通配符
我該怎麼做?
我想在包含名字和姓氏的列中找到兩個名字,例如'name1''name2'。
WHERE ContactName IN('name1%','name2%'); < - 不適用於通配符
我該怎麼做?
... WHERE ContactName LIKE "name1%" OR ContactName LIKE "name2%";
嘗試
where Match(ContactName) Against ('name1', 'name2')
,但在此之前,請確保您有全文索引的名稱字段創建。
一旦建立全文索引,這可能會更快,比多個子句更靈活。 –
試試這個
SELECT * FROM tbl_name
WHERE ContactName LIKE "name1%" OR ContactName LIKE "name2%";
%在字符串的開頭總是一個壞主意。進一步瞭解索引。 – blue
一種選擇是單獨列出每個和使用LIKE
WHERE ContactName LIKE 'name1 %' OR ContactName LIKE 'name2 %';
註名之後,我已經加了空間。我假設你想要一個精確匹配的名字。
另外,您可以使用MySQL REGEXP
功能:
WHERE ContactName REGEXP '^(name1|name2)$'
你應該參考這個鏈接CLICK HERE:
.......WHERE ContactName LIKE 'name1 %' OR ContactName LIKE 'name2 %';
我會做 '%名稱1%' 和 '%名2%' ...確保他們的訂單可以改名。 –
哦,是的。也這麼覺得。那麼IN的需求是什麼?只是爲了簡化搜索確切的值? – user3244268
@SumitGupta - 我強烈建議** NOT **將**%**放在字符串的開頭。這隻會使索引無用。 – blue