SQL 服务器检查字符串中的空格、特殊字符和字符

SQL Server Check String for Spaces, Special Characters, and Charcters

我有一份报告生成了一个值列表,这些值应该都是数字,但当前存储为 varchar。在我的导出中,我将 varchar 字符转换为 Int,但是当有人错误地输入 char 或特殊字符时,报告失败,因为无法转换为 INT

Current List
557780
558871
5588a6
5588 7

我需要的是将那些包含空格或字符的值换成错误整数(如 99999999)的东西,因此最终结果将是

557780
558871
99999999
99999999

我知道我可以使用类似这样的东西来做到这一点

CASE WHEN SomeNum LIKE '%_%' THEN 99999999 ELSE SomeNum
     WHEN SomeNum LIKE '%a%' THEN 99999999 ELSE SomeNum END

但是有没有更好的方法来单独比较每个字母和特殊承租人?

你可以使用模式

case when SomeNum NOT LIKE '%[^0-9]%' THEN 99999999 ELSE cast(SomeNum as int) END

如果您处于 SQL Server 2008 或更高版本,则可以使用 ISNUMERIC。请注意,这将匹配货币和小数等。如果您只是在寻找整数,那么您需要使用正则表达式。见雷达的回答。

为了完整起见,他们的例子是这样的:

USE AdventureWorks2012;
GO
SELECT City, PostalCode
FROM Person.Address 
WHERE ISNUMERIC(PostalCode)<> 1;
GO

如果您是 SQL Server 2008 之前的版本,您可以使用 Radar 的正则表达式回答

您可以在 SQL 2012+:

上试试这个
SELECT COALESCE(TRY_CONVERT(INT, SomeNum), 99999999) AS Value
FROM YourTable