我有以下命名顏色在我的MySQL表列值:1; 2; 3; 11; 12的MySQL選擇使用REGEXP
id | color
1 | 1;2
2 | 2;11
3 | 1;3
4 | 12
我想用REGEXP,只選擇具有該表的行顏色1.
當我使用簡單的表達式
color REGEXP '1'
它也選擇具有值11或12,而我尋找那些只有值1行。所以當我使用上面的表達式時,它顯示了上面示例中所示的所有4行,因爲我希望它向我顯示僅帶有ID 1和3的行。
我有以下命名顏色在我的MySQL表列值:1; 2; 3; 11; 12的MySQL選擇使用REGEXP
id | color
1 | 1;2
2 | 2;11
3 | 1;3
4 | 12
我想用REGEXP,只選擇具有該表的行顏色1.
當我使用簡單的表達式
color REGEXP '1'
它也選擇具有值11或12,而我尋找那些只有值1行。所以當我使用上面的表達式時,它顯示了上面示例中所示的所有4行,因爲我希望它向我顯示僅帶有ID 1和3的行。
您需要to use word-delimiters on either side of the 1將其隔離:
color REGEXP '[[:<:]]1[[:>:]]'
這很好用!非常感謝 –
你可以嘗試像
REGEXP '^1;|;1;|;1$'
如果我沒看錯,這將無論是在開始一個分號或1兩間semicola,或者分號後一個1找個1。這應該是很重要的。
您的數據庫違反了第一範式。您正在一列中保存多個值(顏色)。請規範化您的數據庫。 – Jacob
我認爲這不是重點。 –