我在mysql表中搜索像Cityname,State这样的字符串,其中州名是2个字母的字符

时间:2010-04-16 15:52:02

标签: mysql regex

我在mysql表中搜索类似Cityname,State(例如,Moline,IL)的字符串。 如何在mysql中使用regexp进行查询。

2 个答案:

答案 0 :(得分:2)

mySQL有一个REGEXP运算符,可以满足您的需求:

11.4.2. Regular Expressions

答案 1 :(得分:1)

您可以尝试以下内容:

select foo from bar where foo REGEXP '[a-zA-Z ]+,\s*(AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY)'

这要求有效的城市名称由大写/小写字母A-Z组成,并且可选地包括一个或多个空格。您可以在第一组[ ]括号中为城市名称添加其他有效字符。

要了解MySQL支持的正则表达式功能,请参阅http://www.regular-expressions.info/refflavors.html上的 POSIX ERE

正则表达式解释

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  [a-zA-Z ]+               any character of: 'a' to 'z', 'A' to 'Z',
                           ' ' (1 or more times (matching the most
                           amount possible))
--------------------------------------------------------------------------------
  ,                        ','
--------------------------------------------------------------------------------
  \s*                      whitespace (\n, \r, \t, \f, and " ") (0 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    AL|AK|AS|...             'AL' or 'AK' or 'AS' or ... 
                             (valid state abbreviations)
--------------------------------------------------------------------------------
  )                        end of \1