2013-05-30 80 views
-3

我的代碼工作正常,如果我選擇的值是雙打的列,但現在我想要另一列 其中的值不是雙倍,我可以將它們轉換爲select語句內雙打?我可以在select語句中使用C#方法嗎?

值是像00:17,15

我已經使這個字符串到雙,但不知道如何使用是select語句中,建議的方法?

SqlCommand command = new SqlCommand("SELECT min(Score) FROM "+ table +" WHERE [" + sportEvent + "] < (@result);", connect); 
     command.Parameters.AddWithValue("@result", result); 
+0

不能使用SQL查詢C#方法(好吧,你[可](http://stackoverflow.com/questions/11441369/ php-string-concatenation),但通常不需要t o),因爲查詢被髮送到服務器並在那裏執行。 它取決於數據存儲的格式和您想要的格式。 – CodeCaster

+1

'string'和'double'不是SQL類型。 – Jodrell

+0

哪一個是你想要轉換的字符串?得分了?結果?從你的問題來看,這不是很清楚。 – valverij

回答

1

基本上創建一個新的SQL Server項目來託管你的功能。 創建一個類並將您的函數作爲靜態函數添加到該類。 裝飾你的功能與Microsoft.SqlServer.Server.SqlFunctionAttribute 編譯您的項目,並在SQL服務器註冊程序集

看看http://tech.avivo.si/tag/create-custom-sql-function-from-c/

給出瞭如何創建一個功能一個非常簡單的例子您可以從SQL Server調用C#

也期待在http://msdn.microsoft.com/en-us/library/w2kae45k%28VS.80%29.aspx

+0

你真的不想要這個,它可以簡單地用REPLACE或其他方法解決。 OP應該解釋「00:17,5」和「17,5」必須相互處理。 – CodeCaster

+0

從MSDN引用:「CLR函數比使用Transact-SQL用戶定義函數的調用路徑更快。」 (http://msdn.microsoft.com/en-us/library/ms131075.aspx) - 從TimeStamp轉換爲double的邏輯在C#中比在T-SQL中更容易理解和維護 –

+0

REPLACE是不是UDF。無論如何,底層的問題是OP正在比較錯誤的數據類型。是的,完全有可能編寫一個CLR轉換器,將其放入SQL服務器,並讓您的函數針對每個查詢運行數千次。 OR:OP現在停止,重新考慮他的數據格式,並且無需轉換即可解決。我並不是說T-SQL中的CLR函數沒有它自己的位置,我只是說在這種情況下,它看起來絕對不是解決手頭問題的正確解決方案。 – CodeCaster

相關問題