在将 nvarchar 值 '19*20镀锌' 转换成数据类型 int 时失败
时间: 2024-03-11 10:50:04 浏览: 61
这是因为 '19*20镀锌' 包含非数字字符 '*' 和中文字符 '镀锌',因此无法将其转换为整数。根据这个字符串的格式,它看起来像是一个包含长度、宽度和材料的规格描述,而不是一个整数。
如果你需要将这个字符串中的数字提取出来,你可以使用以下代码:
```SELECT SUBSTRING('19*20镀锌', 1, CHARINDEX('*', '19*20镀锌')-1)```
这将返回一个子字符串 '19',它是原始字符串中 '*' 前面的数字。如果你需要将这个子字符串转换为整数,你可以使用以下代码:
```SELECT CONVERT(int, SUBSTRING('19*20镀锌', 1, CHARINDEX('*', '19*20镀锌')-1))```
这将返回整数值 19。请注意,这种方法仅适用于包含类似规格描述的字符串,而不适用于其他格式的字符串。
相关问题
在将 nvarchar 值 '19*2' 转换成数据类型 int 时失败
这是因为 '19*2' 包含一个非数字字符 '*',因此无法将其转换为整数。如果你想将 '19*2' 中的数字计算出结果,可以使用以下代码:
```SELECT 19 * 2```
这将返回结果为38的整数值。但是如果你确实需要将 '19*2' 转换为整数类型,你可以使用 TRY_CONVERT 函数来尝试转换,如果无法转换,它将返回 NULL。以下是一个示例:
```SELECT TRY_CONVERT(int, '19*2')```
这将返回 NULL。
在将 nvarchar 值 '' 转换成数据类型 int 时失败
这是因为你试图将一个空字符串''转换为整数,而空字符串不能转换为整数。如果你想将空字符串视为0,可以使用以下代码:
```SELECT ISNULL(NULLIF('', ''), 0)```
这将返回0作为整数值。但是请注意,这只适用于空字符串,如果你尝试将包含非数字字符的字符串转换为整数,仍然会失败。
阅读全文