我在我的MySQL表中有一列。列名是「attached_products」,現在,例如,我在那裏有一些記錄,並且attached_products的值爲「1,16,164,1645」,如何選擇所有帶有「16」的記錄?如何在逗號分隔字符串中選擇一個數字?
我試圖在where子句中,它去像:
select * from websites where attached_products like '%16%'
,但它也有164個21645.
感謝所有幫助選擇的記錄! :)
我在我的MySQL表中有一列。列名是「attached_products」,現在,例如,我在那裏有一些記錄,並且attached_products的值爲「1,16,164,1645」,如何選擇所有帶有「16」的記錄?如何在逗號分隔字符串中選擇一個數字?
我試圖在where子句中,它去像:
select * from websites where attached_products like '%16%'
,但它也有164個21645.
感謝所有幫助選擇的記錄! :)
您你可以使用的數據庫,如你所說:
SELECT * FROM `websites` WHERE (`attached_products` LIKE '%,16,%' OR `attached_products` LIKE '16,%' OR `attached_products` LIKE '%,16' OR `attached_products`='16');
但你應該考慮重新設計你的數據庫更容易選擇。您可以添加另一個表,只有那些附加產品,如:
table 1
id | etc ... | etc .... |
attached_products
id | id_product | product
其中id_product從表1和產品是產品ID
是的,我認爲你是對的,我是這個系統的新開發者。我正在考慮重新設計數據庫。 – Mico
...或者'attached_products' ='16' –
@Phil Wallach謝謝...你是對的:) –
你可以嘗試select * from websites where attached_products like '%,16,%'
一個更好的解決辦法是,因爲使用的是一個糟糕的設計,以創建一個新表來存儲這種關係(包含產品和附屬產品ID)
SELECT * FROM網站在哪裏(select substr(attached_products,','))= 16。但好的解決方案是重新設計
這是一個多對一的關係 - 你需要一個表來關聯e所附產品與本表中的物品相關。 @Mhaihai有你的答案。 –