Mysql 如何匹配SQL中的任何字母?

Mysql 如何匹配SQL中的任何字母?,mysql,sql,Mysql,Sql,我想返回某些字段遵循特定模式的行,例如字符串中的特定字符是字母还是数字。为了测试它,我想返回第一个字母是任意字母的字段。我用了这个密码 SELECT * FROM sales WHERE `customerfirstname` like '[a-z]%'; 它什么也不返回。所以我认为标准是第一个字符是一个字母,接下来的任何字符都不重要。 下面的代码可以工作,但限制了第一个字符为a的行 SELECT * FROM sales WHERE `customerfirstname` like 'a%'

我想返回某些字段遵循特定模式的行,例如字符串中的特定字符是字母还是数字。为了测试它,我想返回第一个字母是任意字母的字段。我用了这个密码

SELECT * FROM sales WHERE `customerfirstname` like '[a-z]%';
它什么也不返回。所以我认为标准是第一个字符是一个字母,接下来的任何字符都不重要。 下面的代码可以工作,但限制了第一个字符为a的行

SELECT * FROM sales WHERE `customerfirstname` like 'a%';
我不懂模式匹配吗?它不是[a-z]或[a-z]或[0-9]表示任何字母或数字吗? 如果我想在字符串中的第二个字符上运行这个测试,我会使用

SELECT * FROM `sales` WHERE `customerfirstname` like '_[a-z]%' 

这是针对SQL和MySQL的。我在phpmyadmin中执行此操作。

要使用正则表达式:

SELECT s.* 
FROM sales s
WHERE s.customerfirstname REGEXP '^[a-zA-Z]';

要使用正则表达式:

SELECT s.* 
FROM sales s
WHERE s.customerfirstname REGEXP '^[a-zA-Z]';

这可以通过正则表达式实现

SELECT * FROM sales WHERE REGEXP_LIKE(customerfirstname, '^[[:alpha:]]');
^
表示字符串的开头,而
[:alpha]
字符类匹配任何字母字符

为了以防万一,以下是一些您可能会发现有用的其他字符类:

  • alnum
    :数字字符
  • 数字
    :数字字符
  • lower
    :小写字母字符
  • 大写
    :大写字母字符

有关更多信息,请参见…

这可以通过正则表达式实现

SELECT * FROM sales WHERE REGEXP_LIKE(customerfirstname, '^[[:alpha:]]');
^
表示字符串的开头,而
[:alpha]
字符类匹配任何字母字符

为了以防万一,以下是一些您可能会发现有用的其他字符类:

  • alnum
    :数字字符
  • 数字
    :数字字符
  • lower
    :小写字母字符
  • 大写
    :大写字母字符
看更多