我使用SQL Server 2008SQL Server select sql_variant平等不起作用?
我有一個名爲數據類型sql_Variant
的varEnteredValue
列。
當我執行以下select語句我沒有得到任何
SELECT * FROM tblname WHERE varEnteredValue = 1
通知我有一個價值1個多值此列
問題
哪有我解決了這個問題?我是否需要轉換數據類型?
我使用SQL Server 2008SQL Server select sql_variant平等不起作用?
我有一個名爲數據類型sql_Variant
的varEnteredValue
列。
當我執行以下select語句我沒有得到任何
SELECT * FROM tblname WHERE varEnteredValue = 1
通知我有一個價值1個多值此列
問題
哪有我解決了這個問題?我是否需要轉換數據類型?
有兩個問題在這裏:
SQL_VARIANT
到INT
。INT
,並且可能難以預測SQL Server是先過濾還是先嚐試轉換。如果值是數字,則需要首先進行測試,爲此,必須將其顯式轉換爲字符串。這裏是圍繞這兩個問題工作的例子:
WHERE CASE WHEN ISNUMERIC(CONVERT(VARCHAR(32), varEnteredValue)) = 1
THEN CONVERT(FLOAT, varEnteredValue) ELSE 0 END = 1;
你爲什麼要使用SQL_VARIANT
?
我得到以下錯誤:Msg 8116,Level 16,State 1,行1 參數數據類型sql_variant對於isnumeric函數的參數1無效。 – 2013-03-27 17:25:31
@Mina對不起,我應該添加2a。請嘗試顯式轉換。 – 2013-03-27 17:28:45
現在得到此錯誤:Msg 245,Level 16,State 1,Line 1 將nvarchar值「3.3」轉換爲數據類型int時轉換失敗。 – 2013-03-27 17:29:08
確定嗎?我不能複製:http://sqlfiddle.com/#!3/cb0da/1 - 我不會建議存儲與該數據類型... – sgeddes 2013-03-27 17:23:30