我想在SQL服务器中联合29非常大的表,我得到的错误消息“将转换varchar值'10 -p4'转换为数据类型int时转换失败。我不能找到所有表中的所有列,我也找不到关于'10 -p4'的含义的信息。我怎样才能让我的工会工作?工会转换数据类型错误
-2
A
回答
1
要使工会工作,所有列必须是相同的数据类型..
这将失败
select 1,'a'
union
select 'b','c'
这将如果哟工作妳版本> = 2012
select 1,'a'
union
select try_Cast('b' as int),'c'
所以尽量使用try_Cast如果你是在一个版本> = 2012列引发错误
的版本> = 2008和< 2012,你也可以尝试SQL_VARIANT,因为它封装了所有数据类型
select cast(1 as sql_variant),'a'
union
select cast('b' as sql_variant) ,'c'
,你也可以尝试消除错误的值,如果你相信你只有通过整数where子句中使用ISNUMERIC,但这是受到一些限制
+1
不知道'sql_variant' +1 .. –
0
请看下面的例子
select 1
union
select '10-p4'
当你执行上面的查询,你会得到同样的错误。一列可以只有一个datatype
。您不能合并Int
和Varchar
。如果这样做,编译器将隐式转换varchar
到int
数据类型,因为INT
拥有varchar
在给定的信息更高的优先级这一切,我可以与川方,找出哪些列有'10-p4'
数据和做的INT
一个显式转换到Varchar
避免隐式转换
select cast(1 as varchar(10))
union
select '10-p4'
0
你很可能试图利用工会的表使用不同的数据类型组合。一个表在某处包含值'10 -p4',但另一个表中有一个同名的列被声明为int。
0
29个表的联合?哎呀 - 表演一定要吸!最好在查询开始时使用正确的模式创建一个临时表,然后在29个后续插入中插入记录,然后选择返回的内容。
旁白被更好的性能(SQL不具有比较29分的结果集,看它是否能找到一个共同的模式)它也更容易调试SQL
这里有一个例子:
-- Ensure that the temp table does not already exist
-- (irrelevant if you wrap this in a stored proc)
if (object_id('tempdb..#tempTable') is not null)
drop table #tempTable
-- Create a table in the tempdb to compile your results in
create table #tempTable
(
SourceQuery int,
Foo varchar(100),
Bar int
)
-- Fill the temp table
insert into #tempTable
select 1, foo, bar
from TableA
insert into #tempTable
select 2, hellp, world
from TableB
-- 27 more queries like this
-- Get your results
select * from #tempTable
-- Tidy Up
drop table #tempTable
相关问题
- 1. 错误转换数据类型
- 2. 数据类型转换错误
- 3. 数据类型转换错误
- 4. 错误转换数据类型
- 5. 类型转换错误在JSP会议
- 6. 错误:错误的数据类型为varchar转换为数字
- 7. 转换数据类型(varchar)仍然显示转换错误
- 8. 错误转换数据类型为varchar为bigint SQL错误
- 9. 错误类型转换它不会工作作为字符串
- 10. 错误类型转换
- 11. GSON类型转换错误
- 12. 类型转换错误
- 13. 类型转换错误
- 14. 类型转换错误,c#
- 15. 在类型转换错误
- 16. 数据透视表中的数据类型转换错误
- 17. MySQL的函数类型转换错误
- 18. 算术溢出错误转换数字数据类型数字
- 19. 转换数据类型时出错varchar
- 20. 将数据类型varchar转换为int错误时出错?
- 21. 空XML节点会导致错误转换数据类型为varchar到数字
- 22. 错误转换数据类型为nvarchar到数字鉴于
- 23. SQL错误转换数据类型为varchar到数字
- 24. CSHARP ado.net错误数据类型为nvarchar转换为数字
- 25. C#错误的数据类型为nvarchar转换为数字
- 26. 错误转换数据类型为varchar到数字
- 27. 错误无法将数据类型nvarchar转换为浮点数
- 28. 算术溢出错误转换数字数据类型为varchar
- 29. 错误转换数据类型 '数字' 为十进制(帮助!)
- 30. Oracle无法从LONG数据类型转换为CLOB数据类型(incosistent数据类型错误)
[SQL Union导致“将varchar值转换为int时转换失败”的可能的重复](https://stackoverflow.com/questions/25373180/sql-union-causes-conversion-failed-when-converting-the-varchar -value-to-int) –