簡體   English   中英

MySQL查詢“開始於但可能不完全包含”

[英]MySQL query for “starts with but may not fully contain”

有沒有一種方法可以對以開頭但可能不完全包含給定字符串的數據字段進行MySQL查詢?

例如,如果我有以下數據項列表:

my_table
1. example.com
2. example.com/subpage
3. subdomain.example.com
4. ain.example.com
5. ple.com

我想喂

  • “ example.com/subpage”並返回#1,#2
  • “ example.com”並返回#1
  • “ wexample.com”,不返回任何內容
  • “ exa”,什么也不返回
  • “ subdomain.example.com/subpage”並返回#3

非常感謝!

鑒於:

CREATE TABLE paths ( path VARCHAR(255) NOT NULL );

搜索“ example.com/subpage”將需要以下查詢:

SELECT * FROM paths WHERE INSTR("example.com/subpage", path) = 1;

只是不要嘗試經常在大型數據集上運行它...

文件: http//dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_instr

由於測試數據表明您不希望每個字符都匹配(而是更像逐個組件地進行匹配),因此請將輸入拆分為各個組件並搜索所有前綴。

如果要返回example.com的結果而不是考試的結果,則不是在搜索“以”您的輸入開頭的內容。 不知道問題是錯誤的還是那里的例子。

如果示例正確,那么您將需要做一些事情來確定您的輸入是否是URL,或者不使用正則表達式之類的模式匹配,或者至少在要匹配的內容周圍指定一些可靠的規則。 您可能還需要先解釋這些規則,然后才能提出正確的建議。

它可能很簡單,只要提取“ /”之前的任何內容(如果有的話),或者使用您的應用程序將您對URL組件和path組件的請求分解。

mysql中正則表達式的模式信息

似乎您希望列值匹配模式的開頭:

SELECT * FROM my_table WHERE 'example.com' LIKE CONCAT(my_table.my_column, '%');

缺點是它不會在my_column上使用任何索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM