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
:大写字母字符大写