[英]How to match any letter in SQL?
我想返回某些字段遵循特定模式的行,例如字符串中的特定字符是字母还是数字。 为了进行测试,我想返回第一个字母是任何字母的字段。 我用了这段代码。
SELECT * FROM sales WHERE `customerfirstname` like '[a-z]%';
它什么也不返回。 因此,我认为准则是第一个字符是字母,然后任何后续字符都没有关系。 以下代码有效,但是限制了第一个字符为a的行。
SELECT * FROM sales WHERE `customerfirstname` like 'a%';
我不了解模式匹配吗? 是不是字母或数字是[az]或[AZ]或[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 * FROM sales WHERE REGEXP_LIKE(customerfirstname, '^[[:alpha:]]');
^
表示字符串的开头,而[:alpha]
字符类与任何字母字符匹配。
以防万一,这里还有一些其他的字符类,您可能会发现它们有用:
alnum
:字母数字字符 digit
:数字字符 lower
:小写字母字符 upper
:大写字母字符 有关更多信息,请参见mysql regexp文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.