是否可以将nvarchar转换为int?

Abs*_*Abs 0 t-sql sql-server

我尝试过这样的事情:

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
Run Code Online (Sandbox Code Playgroud)

PREPRO包含所有"False".

我收到此错误:

将nvarchar值'False'转换为数据类型int时转换失败.

这是否意味着nvarchar无法转换为整数?我猜是因为有些数据可能会丢失.

Ode*_*ded 5

您正在尝试将您的转换PREPRO为整数,即使它保存的值是TrueFalse:

convert(integer, PREPRO)
Run Code Online (Sandbox Code Playgroud)

您无法将值转换为False整数.

when子句中的条件求值为true,当PREPRO数字为0,1,-1 时,或者当它计算为True或时False.在任何这些情况下,您都尝试将此值转换为整数然后转换为位.