无论在语言方面还是在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数据结构。

10-07 17:48