Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否可以将nvarchar转换为int?_Sql Server_Tsql - Fatal编程技术网

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