Sql server 是否可以将nvarchar转换为int?
我试过这样的方法:Sql server 是否可以将nvarchar转换为int?,sql-server,tsql,Sql Server,Tsql,我试过这样的方法: select PREPRO = case when (isnumeric(PREPRO) = 1 and PREPRO in ('0','1','-1')) or convert(varchar, PREPRO) in ('True','False') then convert(bit, convert(integer, PREPRO)) else 'No' end from dbo.TI10SE 预印本包含所有错误信息 我得到这个错误: 将nvarchar值“Fals
select PREPRO = case when (isnumeric(PREPRO) = 1 and
PREPRO in ('0','1','-1')) or
convert(varchar, PREPRO) in ('True','False')
then convert(bit, convert(integer, PREPRO)) else 'No' end
from dbo.TI10SE
预印本包含所有错误信息
我得到这个错误:
将nvarchar值“False”转换为数据类型int时,转换失败
这是否意味着nvarchar永远无法转换为整数?我猜这是因为某些数据可能丢失。您正在尝试将预印本转换为整数,即使其值为真或假: 不能将值False转换为整数
当prepo是0、1、-1范围内的数字或当其计算结果为true或False时,when子句中的条件计算结果为true。在上述任何情况下,您都会尝试将此值转换为整数,然后再转换为位 实现此目的的用例:
DECLARE @PREPRO VARCHAR(5)
SET @PREPRO = 'False'
SELECT CASE WHEN @PREPRO = 'False' THEN 0 ELSE 1 END
如果nvarchar包含整数,则可以将其转换为整数
DECLARE @PREPRO VARCHAR(5)
SET @PREPRO = '10'
SELECT CONVERT(integer, @PREPRO)
T-SQL不知道什么与“False”或“True”关联,因此您必须使用rdkleine所说的CASE语句
在本声明中:
convert(bit, convert(integer, PREPRO)) else 'No' end
您将收到一个错误,因为“No”不是bit类型,您试图返回什么?它是nvarchar。这是不可能的。是的,这正是我所做的。我信任我看到的代码,因为它是由一位资深人士编写的,并试图使用它,但后来意识到不可能将nvarchar转换为int。
convert(bit, convert(integer, PREPRO)) else 'No' end