Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 尝试动态添加列时出错_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 尝试动态添加列时出错

Sql 尝试动态添加列时出错,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的要求是动态地将try_convert(int,left(employee_id,charindex('-',employee_id)-1))添加到列中,但我得到了一个错误 在减法运算符中,数据类型varchar和varchar不兼容 您需要在此处转义您的引用: charindex('-', employee_id) - 1) 因此,整个生产线需要变成: set @sql= 'select ' + @cols + ',[employee],' +' cast(left(employee_id

我的要求是动态地将try_convert(int,left(employee_id,charindex('-',employee_id)-1))添加到列中,但我得到了一个错误

在减法运算符中,数据类型varchar和varchar不兼容


您需要在此处转义您的引用:

charindex('-', employee_id) - 1)
因此,整个生产线需要变成:

set @sql= 'select ' + @cols + ',[employee],' +' cast(left(employee_id, charindex(''-'', employee_id) - 1) as int) as [employee_id]  from Employee'

对于您现在所拥有的,s正在破坏字符串,因此-在动态SQL之外,导致SQL Server将其视为字符串的第一部分减去第二部分,从而产生错误。

@cols
是一个标量值
set@cols=a、b、c、d没有意义;它不能有4个未定义列的值。您可能是指set@cols='a,b,c,d';停止把代码塞进一块——特别是在尝试动态sql时。您还有其他错误有待发现。
selecta、b、c、d、[employee],
将是一个糟糕的开始。旁白:在每个列名上使用
nvarchar(max)
quotename
。我希望这些专栏不是来自用户输入。。。
set @sql= 'select ' + @cols + ',[employee],' +' cast(left(employee_id, charindex(''-'', employee_id) - 1) as int) as [employee_id]  from Employee'