簡體   English   中英

如何使用PHP從MySQL整理垂直線

[英]How I can CONCAT vertical lines from MySQL using PHP

如果有以下問題。 |分隔為|時,無法從MySQL獲取值|

我有以下字符串:

SELECT * FROM user WHERE CONCAT(',', category, ',') REGEXP ',(lc_8|swimming),'

並且此字符串僅在我的MySQL category具有值為lc_8,swimming,category lc_8,swimming,

我如何更改上面的字符串以獲得相同的值,但是如果在列中我有lc_8|swimming|

| 是正則表達式中的特殊字符。 您需要將其轉義,例如\\| 嘗試:

SELECT * FROM user WHERE CONCAT(',', category, ',') REGEXP ',(lc_8\|swimming),'

需要在正則表達式中轉義的字符如下:

* ? + [ ( ) { } ^ $ | \

如果您確實想匹配示例中的括號,則也需要引用它們。

(|在正則表達式中有特殊含義,您需要對它們進行轉義。

SELECT *
FROM user
WHERE CONCAT(',', REPLACE(category, '|', '\\|'), ',') REGEXP ',\(lc_8\|swimming\),'

但是,如果要搜索以逗號分隔的列表,則最好使用為此設計的函數:

SELECT * FROM user
WHERE FIND_IN_SET('(lc_8|swimming)', category)

最好不要先存儲以逗號分隔的列表,而是將類別放在單獨的表中,每個類別一行。

暫無
暫無

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

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