【发布时间】:2014-05-06 06:16:04
【问题描述】:
在我的应用程序的搜索功能中,我实现了一个搜索功能,它针对数据库执行以下语句。
resultsquery = db.DBMovies.Where(m => (m.Actors.ToLower()).Contains(q.ToLower()))
在q.ToLower()部分我读取了url参数q并转换成小写在相关的数据库栏目中找到。在我的数据库中,“演员”列的类型是“文本”而不是 varchar。当我运行我的应用程序时,我得到一个名为Argument data type text is invalid for argument 1 of lower function 的异常。有什么办法可以避免这个异常?我更喜欢一种可以在一行中解决它的方法。
谢谢。
【问题讨论】:
-
text 是 sql 数据类型,用于非常大的文本,最多可容纳 2GB;我真诚地怀疑您是否需要“电影”表的演员列;如果你不合理,你真的应该使用 nvarchar(一些合理的限制) 或 nvarchar(max) - 查看technet.microsoft.com/en-us/library/ms187993.aspx
-
text 和 ntext 字段用于非常大的文本数据。您应该使用 varchar 字段。与文本字段相比,您可以更轻松地对 varchar 字段执行类似的查询。欲了解更多信息,请参阅:databases.aspfaq.com/database/…
-
检查这是否可以帮助你stackoverflow.com/questions/2431908/…
-
@OndrejSvejdar 你是对的!但是有没有办法在不改变数据库的情况下解决这个问题?
标签: c# sql sql-server lambda