如何在Transact-SQL中检查字符串是否仅由字母或数字组成?
此处字符串的数据类型为nchar
,"letters"专门指拉丁字符。数据库环境为Microsoft SQL Server 2014。
所需结果示例:
C172E returns True
412?A returns False //'?' is neither a letter nor a number
我做了一些搜索,但只找到了内置的ISNUMERIC()
函数,它只用于数字。
是否有解决此问题的Transact-SQL解决方案?
请参阅关于仅获取具有字母数字数据的字段的类似问题
您可以执行以下操作:
FIELD NOT LIKE '%[^a-zA-Z0-9]%'
您可以使用not like
:
(case when str not like '%[^a-zA-Z0-9]%' then 1 else 0 end) as isalnum_flag
这意味着字符串没有非字母数字字符。
您正在考虑使用Regex来实现这一点。[a-zA-Z]是字符,[0-9]是数字,[a-zA-Z0-9]两者都是。你提到必须添加空格吗?\s是空白字符(这可能不仅仅是字段。
这一次有点复杂(更深入(。