1
我在我的数据库表中有这一列及其字符串。我没有做这个表,我不能改变数据类型。SQL将列转换为浮动在where子句中
但是我需要将它转换为我的where子句中的float,以便我可以将它与浮点数进行比较。
我已经试过了铸造我的专栏,为float:
sql += " AND CAST (ec.bedrooms as float) <= " + id.beds.Max().Split('-')[1] + " AND CAST (ec.bedrooms as float) >= " + id.beds.Min().Split('-')[0];
,但没有工作,因为我得到这个错误:
An error occurred while reading from the store provider's data reader. See the inner exception for details
我在做什么错?
这里是正在为部分
AND CAST (ec.bedrooms as float) <= 3 AND CAST (ec.bedrooms as float) >= 2
"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"Error converting data type nvarchar to float.","ExceptionType":"System.Data.SqlClient.SqlException","StackTrace":" at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)\r\n at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)\r\n at System.Data.SqlClient.SqlDataReader.Read()\r\n at System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.StoreRead()"}}
请出示*实际*生成的查询。 – Siyual
和堆栈跟踪 – hardkoded
您应该真正使用参数来构建SQL查询。 –