簡體   English   中英

如何在mysql數據庫中搜索部分條目?

[英]How to search in parts of entries within a mysql database?

我正在使用一個包含一些“特殊”列的數據庫:一個表的“單元格”包含一個名稱,例如“ Turner,William”之類的畫家; 其他一些包含與人員表關聯的ID,例如“ ID123”。 但是某些單元格包含兩個或多個條目,例如:“ ID123; Turner,William”-它們始終以“;”分隔。

我的問題是:通常,我可以使用“ SELECT-FROM-LEFT JOIN”之類的選項來進行一次選擇。 是否有可能使用多個條目? 就像是

SELECT artwork.nameid, artwork.artist,
       person.fullname
FROM   artworks
LEFT JOIN person ON person.id = [Part of String artwork.artist]

關系數據庫的重要原理之一是每一列都包含一個值,而不是您所描述的復合值。 並且給定列中的值具有相同的類型,而不是變量類型。

因此,您應該通過列來解決您的問題,一列用於ID,另一列用於Name。 不要試圖使用分號將它們存儲在同一列中。

CREATE TABLE artworks (
  ...
  PersonID VARCHAR(5),   -- example: ID123
  Name     VARCHAR(100), -- example: Turner, William
  ...
);

也就是說,您可以使用某些MySQL字符串函數來完成您描述的事情。

例如,您可以使用LOCATE(';' artwork.artst)來檢測給定字符串中是否存在分號。 您可以使用SUBSTRING_INDEX(artwork.artist, ';', 2)從以分號分隔的字段中提取第二個“字段”。

如果您需要處理各種情況,那么解決問題所需的表達式注定會變得非常復雜,例如,如果列的ID是ID而不是ID,該怎么辦? 如果有三個或更多用分號分隔的字段怎么辦?

請建議不要重新組織表,這樣一來,您在每一列中總會有一個值。

暫無
暫無

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

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