[英]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.