Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 转换varchar值时转换失败';会议室';到数据dype int_Sql_Sql Server_Database_Sql Server 2008_Relational Database - Fatal编程技术网

Sql 转换varchar值时转换失败';会议室';到数据dype int

Sql 转换varchar值时转换失败';会议室';到数据dype int,sql,sql-server,database,sql-server-2008,relational-database,Sql,Sql Server,Database,Sql Server 2008,Relational Database,下面是我的SQL(SQL Server 2008),我正在试图找出为什么会收到此错误消息。我检查了有问题的“type”的数据类型,并将其设置为char(50)。“条件”列仅在一个表中。有什么想法吗 SELECT '' as condition, area, type FROM d_rooms UNION SELECT * FROM k_rooms 我还尝试了以下操

下面是我的SQL(SQL Server 2008),我正在试图找出为什么会收到此错误消息。我检查了有问题的“type”的数据类型,并将其设置为char(50)。“条件”列仅在一个表中。有什么想法吗

SELECT 
  '' as condition,                                                        
  area,
  type
 FROM d_rooms
 UNION
 SELECT * FROM k_rooms
我还尝试了以下操作,但无效…相同的错误消息

cast(type as char(50)) as type
我也试过同样的错误

'' AS type --same error

当您将这些列组合在一起时,它们的顺序必须相同,如果*不起作用,请显式列出它们:

SELECT 
  condition,                                                        
  area,
  [type]
 FROM d_rooms
 UNION
 SELECT 
  condition = '',                                                        
  area,
  [type] 
FROM k_rooms

更新假设,如果条件不在两个表中,则需要将其硬编码为“”,或
NULL
。转换问题显然是列未对齐的结果。

如果两个表中的列确实相同,请尝试以正确的顺序显式说明列,而不是使用
选择*

SELECT 
  condition,                                                        
  area,
  type
 FROM d_rooms
 UNION
 SELECT 
  condition,                                                        
  area,
  type
 FROM k_rooms
无论如何,这是一个很好的实践。考虑下面的场景:


使用
select*
创建包含原始查询的存储过程。这可以正常工作一两年,然后向表k_rooms添加一列。您存储的进程现在在运行时将中断。

哪些列有
k_rooms
?它必须与
d_rooms
具有相同的(包括类型)列。它具有相同的列。我以前犯过错误-列不相同-“条件”仅在一个表中。类型为保留字。你应该把括号放在[type]上,请看我的编辑。实际上有一列是不同的,我的答案仍然适用。我认为你的更新不会改变任何东西。Goat请看我的编辑…列实际上并不是相同的。只需接受Goat的工作,并用你的““”作为条件”,代替他的第一个“条件,”