我有一個表在該數據庫中查詢鏈接的SQL Server 2008數據庫,並加入到數據表中的SQL Server 2000這是工作的查找,直到其中一列的查詢在SQL Server 2008數據庫中更改爲varchar(max)。我收到一個錯誤,我通過使用CAST(varchar(max)column AS varchar(50))修復了它。現在我的查詢性能比變化前的情況要慢。你能給我一些關於如何解決這個問題的建議嗎?感謝您的時間。VARCHAR(最大值),2008年爲varchar在2000
回答
正如其他評論者所指出的那樣,爲什麼列改爲VARCHAR(最大值),如果它能夠可靠地轉換爲VARCHAR(50)?
VARCHAR(最大值)的目的是爲文本數據類型的替代品,不應該僅僅被隨便使用。一個普通的VARCHAR可以支持多達8000個字符,並通過SQL 2000和2005年
如果你正在做這個轉換()在選擇列表中的認可,作爲連接條件,或在where子句中?分佈式查詢已經執行緩慢,並且通過在where子句中添加函數(cast,left等)或加入條件只會使其變得更糟。
假設你不能將varchar(最大值)更改爲普通的VARCHAR,這裏是一個想法
是否2005箱有一個鏈接服務器連接到SQL 2000箱?如果是這樣,你可以這樣運行查詢嗎? 2005框將能夠直接比較varchar(max)和varchar(50)。
奧斯卡,發佈一些額外的細節,我們會盡力幫助你。 – 2010-08-07 13:58:27
供應商是數據庫的所有者(SQL Sever 2008)。他們必須將其更改爲「Max」以容納長期診斷文本,在某些情況下該文本將超過8000個限制。我對數據庫有選擇權限來爲報告提取數據,但我無權創建鏈接服務器。我會問他們是否願意爲我連接我們的服務器SQL 2000。 會 - 我想你的建議,但它返回一個錯誤「參數的數據類型的文本是左函數的參數1無效的。」感謝您的建議。 – Oscar 2010-08-09 15:40:04
- 1. varchar的最大值
- 2. 爲VARCHAR列選擇最大值 - MySQL
- 3. Mysql的VARCHAR作爲INT最大值
- 4. 使用VARCHAR(最大)
- 5. SQL Server 2000中varchar(max)的最大大小
- 6. SQL Server的VARCHAR(最大值)和varchar不兼容
- 7. 將Varchar值轉換爲散列值:varchar
- 8. varchar的最小值?
- 9. SQL 2008 - VARCHAR(最大值)與文本數據類型
- 10. SQL Server 2000 - varchar字段的默認值
- 11. Varchar的最大大小(最大)
- 12. VARCHAR(最大值)採伐限額
- 13. varchar的最大數字值列
- 14. 選擇MySQL中varchar的最大值
- 15. SQL Server 2000 varchar(8000)截斷爲256?
- 16. 找到最大的varchar
- 17. 將XML轉換爲Varchar(最大)
- 18. 發現最大的MySQL時柱爲varchar
- 19. 的Sql 2000〜2008年
- 20. 將值插入到varchar(50)列vs varchar(2000)時的性能差異?
- 21. VarChar的最大行大小(MAX)
- 22. 大規模更新爲varchar
- 23. 轉換爲varchar最新
- 24. 從表中選擇最大值(列)(列爲varchar)
- 25. 錯誤轉化爲varchar(最大值)時,整數或浮點數
- 26. SQL Server 2008 VarChar To DateTime
- 27. Concat NULL與Varchar SQL Server 2008
- 28. format varchar to datetime SQL Server 2008
- 29. 從varchar轉換爲Nvarchar SQLServer 2008
- 30. 將varchar轉換爲datetime的SQL Server 2008
如何LEFT(VARCHARMAXCOLUMN,50)比作CAST - 或者根本不是工作? – 2010-08-06 23:26:06
爲什麼將它定義爲'Varchar(max)',如果它可以成功轉換爲'varchar(50)'? (即將數據類型更改回它是如何選項的?) – 2010-08-06 23:35:30
您收到的錯誤是什麼? – 2010-10-12 16:49:24