之間的轉換我有一個簡單的SELECT語句是這樣的:SQL服務器 - 簡單的選擇和int和string
SELECT [dok__Dokument].[dok_Id],
[dok__Dokument].[dok_WartUsNetto],
[dok__Dokument].[dok_WartUsBrutto],
[dok__Dokument].[dok_WartTwNetto],
[dok__Dokument].[dok_WartTwBrutto],
[dok__Dokument].[dok_WartNetto],
[dok__Dokument].[dok_WartVat],
[dok__Dokument].[dok_WartBrutto],
[dok__Dokument].[dok_KwWartosc]
FROM [dok__Dokument]
WHERE [dok_NrPelnyOryg] = 2753
AND [dok_PlatnikId] = 174
AND [dok_OdbiorcaId] = 174
AND [dok_PlatnikAdreshId] = 625
AND [dok_OdbiorcaAdreshId] = 624
列dok_NrPelnyOryg
的類型爲varchar(30),而不是空的。
該表在此列中包含整數值和字符串值,並且此選擇語句被激發了數百萬次。
然而最近,這種開始消息崩潰:轉換VARCHAR值 '的Garbi czerwiec B' 爲數據類型int時
轉換失敗。
小解釋:該表包含多個「文檔」記錄,所提到的列包含文檔原始編號(來自多個不同的來源)。
我知道我可以通過在數字周圍添加''來解決這個問題,但我寧願尋找一個解釋,爲什麼這用於工作,而現在不改變任何東西,現在它崩潰。
顯然,錯誤消息說明了一切。如果'dok_NrPelnyOryg'的類型是'varchar',爲什麼不查詢它呢? 'dok_NrPelnyOryg ='2753''。自動轉換隻是失敗,因爲他無法將您的值轉換爲數字。 –
公平地說,問題不在於如何解決這個問題,而是爲什麼它在一段時間內工作,然後停止工作。 –
@Aaron Bertrand - 就是這一點。我知道如何解決這個問題,並且我寫了它。 – kubal5003