2017-10-12 223 views
2

之間的匹配任何字,我必須找到一個表中特定的列,其中列值相匹配,例如[名]的所有值MYSQL正則表達式在方括號

我不應該是像值[ a] + [b]或[a]> [b]或[a]%[b] = [c]

因此,我基本上不需要在其中包含特殊字符的列值分數

例如:應該返回[test_123]。

我試圖

select * from table_name where column_name REGEXP '^[[][^+-></%]';

這僅僅是想看看是否後有立即的任何特殊字符,[但怎麼看如果在整個列值的任何特殊字符,我們應該給反斜線在MySQL中定義特殊字符?

我試着在https://regexr.com/,我已經得到了我所需要的正則表達式是

(\[)\w+[^\+\=\/\*\%\^\!](\])

但我不能這樣做在MySQL

+1

請提供一些字符串應該返回,有的認爲不應該。例如,我不清楚方括號是字符串還是元信息的一部分。 「a」字面或表示任何單個字母或代表任何字母串或字母數字串。而且下劃線是否包含在「字母數字」中。等 –

回答

0

***修訂**

(\[[^\_]+])+ 

這似乎適用於你正在尋找的東西。

而且您的查詢是錯誤的,我認爲它應該是這樣的:

SELECT * FROM mytable WHERE REGEXP_LIKE(mycolumn, 'regexp', 'i'); 
+0

謝謝你的回覆,但運行第一個後,我得到空集,所以跑第二個我有輸出,但仍然不是我所期待的。我仍然得到類似[test_field] +1的值,([a] * [b])/ 100我只需要[test1234]或[abcdef]或[Sample_123] – Nazma

+0

編輯我的原始答案 –

+0

知道原因,但即使這不起作用,但我試着回答''[[。。left-square-bracket。]] +([az] | [AZ] | [0-9] | [_] | [[[ 。左方括號]] | [[右方括號]])+ [[右方括號]] $';。。。' – Nazma