检查字符串是否仅由 Transact-SQL 中的字母或数字组成

时间:2020-12-28 17:03:07

标签: sql sql-server tsql

如何在 Transact-SQL 中检查字符串是否仅由字母或数字组成?

这里的字符串具有数据类型 nchar,“字母”特指拉丁字符。数据库环境为Microsoft SQL Server 2014。

所需结果示例:

C172E returns True
412?A returns False  //'?' is neither a letter nor a number

我进行了一些搜索,但只找到了内置的 ISNUMERIC() 函数,该函数仅适用于数字。

是否有针对此问题的 Transact-SQL 解决方案?

3 个答案:

答案 0 :(得分:1)

看到这个关于 obtaining only fields with alphanumeric data

的类似问题

您可以执行以下操作:

FIELD NOT LIKE '%[^a-zA-Z0-9]%'

答案 1 :(得分:0)

您可以使用not like

(case when str not like '%[^a-zA-Z0-9]%' then 1 else 0 end) as isalnum_flag

这是说该字符串没有非字母数字字符。

答案 2 :(得分:0)

您正在考虑使用 Regex 来执行此操作。 [a-zA-Z] 是字符,[0-9] 是数字,[a-zA-Z0-9] 两者都是。你提到必须添加空格? \s 是空白字符(这可能不仅仅是字段。

This one 涉及更多(更深入)。