我想在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) –