簡體   English   中英

如何將URL的整數子字符串內連接到整數?

[英]how do I inner-join an integer substring of a URL to an integer?

我在Joomla有兩個MySQL表: categoriesMenu

字段menu.link具有類似index.php?option=com_content&view=category&id=175 最后一個等號之后的數字等於字段categories.id 我想創建INNER JOIN兩個表之間,使categories.id將等於在menu.link數。

我知道我必須刪除所有號碼,但是我該怎么做?

似乎您正在尋找一個SQL表達式,該表達式將從URL字符串中提取id值。 這始終是一個簡單的建議,因為它取決於URL格式的不可預測的細節。

在MySQL中,這是一個雙重的提議,因為沒有任何正則表達式函數返回實際的字符串值。 它們僅返回true / false。 因此,您需要使用非正則表達式字符串處理功能來提取數據。

話雖這么說,讓我們破解。 該表達式將獲得該數字。

CAST(SUBSTRING_INDEX(menu.link,'view=category&id=',-1) AS INT) AS cat_id

這種字符串處理技巧的核心是字符串'view=category&id=' SUBSTRING_INDEX函數檢索該字符串右側的所有內容,而CAST操作僅采用整數。

如果未找到子字符串,則表達式返回零。 那可能是您想要的,也可能不是。 (我說這很簡單!)

因此,要執行連接,您需要執行以下操作:

SELECT Menu.whatever, 
       categories.whatever
  FROM Menu
  JOIN categories 
    ON categories.id = CAST(SUBSTRING_INDEX(menu.link,'view=category&id=',-1) AS INT)

這將表現不佳。 但這可能是可以的,因為在任何一個表中都不會有成千上萬的行。

暫無
暫無

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

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