常規的正則表達式:什麼是MySQL的SQL正則表達式這個表達式
foo(\((\d{1}|\d{2}|\d{3})\))?
此正則表達式的作品在Java中:
foo(\\((\\d{1}|\\d{2}|\\d{3})\\))?
例子:
fooa //no match
foo(1)a //no match
foo(a) //no match
foo(1) //match
foo(999) //match
foo //match
的MySQL 5.5的文檔(https://dev.mysql.com/doc/refman/5.5/en/regexp.html)說
Note:
Because MySQL uses the C escape syntax in strings (for example, 「\n」 to
represent the newline character), you must double any 「\」 that you use
in your REGEXP strings.
我想作爲一個測試運行MySQL的5.x的
select 'foo' REGEXP 'foo(\\((\\d{1}|\\d{2}|\\d{3})\\))?'
這裏以下是錯誤消息我得到:
Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near ''foo(\\([(]\\d{1}' at line 1
我看着Adapting a Regex to work with MySQL,並試圖更換的建議\ d {1}等等。[0-9]給了我:
select 'foo' REGEXP 'foo(\\(([0-9]|[0-9]|[0-9])\\))?'
但仍然讓MySQL死亡。
我剛剛複製你的SQL語法,並放在我的MySQL GUI上,工作整齊。順便說一句,它返回1. –
你的服務器上運行着什麼MySQL版本? –
@LuiggiMendoza hrmm wacked。我正在SQuirreL中測試它,並在那裏死亡。我把它放到MySQL Workbench中,它可以工作。那太奇怪了。必須是SQuirreL錯誤或其他東西。謝謝!哈哈 –