在 T-SQL 中检查一个字符串的起始字符是否为字母

29

仅使用TSQL,能否检查一个varchar字段的前两个字符是否是字母?

我需要从my_table中选择只有以两个字母开头的my_field的行。如何实现这一目标?

能否使用正则表达式?

3个回答

77

您不需要使用正则表达式,LIKE已经足够了:

WHERE my_field LIKE '[a-zA-Z][a-zA-Z]%'
假设您所说的“按字母顺序排列”仅指拉丁字符,而不是Unicode中被分类为字母的任何内容。 请注意 - 如果您的排序是区分大小写的,则重要的是将范围指定为[a-zA-Z]。[a-z]可能会排除A或Z。[A-Z]可能会排除a或z。

1
@Richardakacyberkiwi - 不正确。在 SQL Server 中,对于大多数排序规则,字母表的顺序是 aAbBcCdDeE...zZ。也许你想到的是 ASCII? - Damien_The_Unbeliever
你说得对。说实话,我从来没有使用过区分大小写的排序规则。 - RichardTheKiwi
1
这仅适用于第一个和第二个字母,我如何对所有字符执行此操作? - Saw
2
@MohamedSakherSawan - 最好单独提出一个问题进行搜索/询问,但好吧,我来回答。如果您想确保一列仅包含字母字符,则双重否定的搜索条件将起作用:NOT column LIKE '%[^a-Z]%' - 这意味着如果该列包含任何数量的字符、一个在集合 a-Z 之外的字符和任意数量的字符,则匹配该列。 - Damien_The_Unbeliever
非常抱歉@Damien_The_Unbeliever,我没有仔细阅读问题,非常感谢,我使用了当前模式:NOT column LIKE '%[^a-zA-Z ]%'。 - Saw

3
select * from my_table where my_field Like '[a-z][a-z]%'

-1
SELECT * FROM Users WHERE mail REGEXP '^[A-Za-z]';

感谢您为Stack Overflow社区做出的贡献。这可能是一个正确的答案,但如果您能提供代码的额外解释,那将对开发人员理解您的思路非常有帮助。对于不太熟悉语法或者正在努力理解概念的新手开发人员来说,这尤其有用。您是否可以编辑您的答案,以便为社区的利益提供更多细节? - Jeremy Caney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接