Sql server ORM中的SQL函数
我有SQL Server、FreeTDS、Django 1.5.5。对于SQL Server的全文搜索,我需要使用SQL Server的contains功能 这将在my_表的x_名称字段中搜索“mytext”Sql server ORM中的SQL函数,sql-server,django,django-orm,Sql Server,Django,Django Orm,我有SQL Server、FreeTDS、Django 1.5.5。对于SQL Server的全文搜索,我需要使用SQL Server的contains功能 这将在my_表的x_名称字段中搜索“mytext” select x_name from my_table where contains(x_name, 'mytext') 对于使用ORM执行此操作,有djorm ext表达式 如果sql函数只有一个参数,但包含两个参数:字段名和文本,那么这很好 它生成Sql的Where语句,如下所示:
select x_name from my_table where contains(x_name, 'mytext')
对于使用ORM执行此操作,有djorm ext表达式
如果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',))
但它的输出应该是这样的:
MyTable.objects.where(Contains("x_name", "mytext"))
.query.get_compiler("default").as_sql()
WHERE (contains("x_name", 'mytext'))
有人知道如何修复吗?我已经解决了这个问题:
MyTable.objects.where(RawExpression("contains(x_name, %s)", 'mytext'))
这看起来像是ORM中的一个bug。为此,我使用原始sql,但ORM会更好更安全。