【发布时间】:2026-02-02 08:20:08
【问题描述】:
我有 SQL Server、FreeTDS、Django 1.5.5。 SQL Server的全文搜索,需要用到Sql server的contains函数。
这将在 my_table 的 x_name 字段中搜索“mytext”。
select x_name from my_table where contains(x_name, 'mytext')
对于使用 ORM 进行操作,有 djorm-ext-expressions。
http://www.niwi.be/2012/10/07/sqlexpressions-and-functions-with-django/
如果 sql 函数只有一个参数,但包含两个参数:字段名称和文本。
生成Sql的Where语句如下:
MyTable.objects.where(Contains("x_name", "mytext"))
.query.get_compiler("default").as_sql()
输出:
WHERE (contains("x_name"))', ('mytext',))
但它应该像这样输出:
WHERE (contains("x_name", 'mytext'))
有人知道怎么解决吗?
【问题讨论】:
-
这看起来像是 ORM 中的一个错误。
-
为此,我使用的是原始 sql,但 orm 会更好更安全。
标签: sql-server django django-orm