无论在语言方面还是在mysql中,我对正则表达式都不满意。
您能帮我写一个查询吗?
我有一个数据库表,一列有三种数据,即库存编号,名称和价格。我感兴趣的是库存编号。我没有创建此数据库设计,所以请耐心等待。
数据采用以下格式:[#3346] - $3,500.00, some name
我必须从该表中获取与给定的库存编号(即3346
)匹配的记录。
SELECT * FROM table_name WHERE col_name REGEXP ?
我该怎么办?
最佳答案
你要:
WHERE col_name REGEXP '^\\[#3346\\]'
分部分进行:
^
指示字符串的开头\[
是文字[
字符(但在字符串中,\
本身需要与另一个\
进行转义)#3346
是文字字符串#3346
\]
是文字]
字符(但在字符串中,\
本身需要与另一个\
进行转义)因此,上面的表达式匹配以文字
[#3346]
开头的任何字符串。碰巧的是,出于这个目的,您甚至不需要使用正则表达式,因为simple pattern match可以达到目的:WHERE col_name LIKE '[#3346]%'
但是,即使您没有创建数据库,也强烈建议您通过将
col_name
分为三列来normalise数据结构。