MSSQL之 非常规字符串转换成整数(mssql 字符串转整数)

2023-04-21 05:54:52 字符串 整数 转换成

MSSQL中如何将非常规字符串转换成整数是一个常见的问题。正常情况下,可以使用内置函数CONVERT来将字符串转换成整数。然而,如果字符串中存在无效的字符,例如非数字,将无法成功转换。例如,字符串“123abc”中存在无效字符,这将导致CONVERT函数引发一个错误。

为解决这个问题,可以使用SQL的LIKE查询来进行筛选,只保留字符串中的数字,然后使用CONVERT函数来转换字符串为数值。下面是非常规字符串转换成整数的一个例子:

— 例子:将“123abc456”转换成整数

DECLARE @String VARCHAR(20) = ‘123abc456’

SELECT CONVERT(INT,(SELECT value FROM (VALUES(REPLACE(@String,(SELECT value FROM (VALUES(REPLACE(@String,'[0-9]’,”)))t WHERE value != ”)),@String)t WHERE value != @String))

上面查询中嵌套使用了VALUES和REPLACE函数,首先使用REPLACE函数将字符串中的所有非数字([0-9])字符替换为空,然后再使用CONVERT将字符串转换成整数。

当字符串中包含一些特殊字符时,同样可以使用类似的方法将其转换为整数。例如,将100#200转换成整数的查询如下:

— 将100#200转换成整数

DECLARE @String VARCHAR(20) = ‘100#200’

SELECT CONVERT(INT,(SELECT value FROM (VALUES(REPLACE(@String,(SELECT value FROM (VALUES(REPLACE(@String, ‘[0-9]’, ”)))t WHERE value != ”)),@String)t WHERE value != @String))

使用上面的方法可以很方便地将MSSQL中非常规字符串转换成整数。只要按照同样的思路使用VALUES和REPLACE函数,就可以将字符串转换成任何需要的数据类型。

相关文章