我有一个没有返回任何值的Subsonic查询。我认为问题出在我的where子句中,虽然我不确定原因。
我真正想要的是一种调试查询的方法,以查看实际上被Subsonic吐出的SQL。我知道有一种方法可以使用带有Inspect()的Query对象来执行此操作,但我正在使用Select对象(或者也可能使用SQLQuerys),因为我需要连接。亚音速选择是否有任何inspect()类型选项?
这是我正在使用的代码:
Dim qry As New [Select]("Contract_NO")
qry.From(<table1>.Schema)
qry.InnerJoin(<table2>.<table2columnA>, <table1>.<table1columnA)
qry.Where(NonInfoleaseLessor.Columns.LessorCode).Like("mystring")
如果我注释掉了哪一行,我会得到完整的结果列表。它不喜欢它的东西,但是我使用where子句在数据库中手动运行查询,并且它可以工作。我怎么能看出有什么区别?
答案 0 :(得分:3)
您的查询的问题是您应该使用Contains(“mystring”)而不是Like(“mystring”)。
查看SQL的最佳方法是使用查询的BuildSqlStatement()方法。
答案 1 :(得分:1)
使用[a]探查器查看实际对数据库执行的SQL。
亚当发现:
.Like("mystring")
最有可能是
.Like("%mystring%")
答案 2 :(得分:1)
请尝试使用Like("%mystring%")
答案 3 :(得分:0)
它可能与您选择的子句或您正在使用的列名有关。 Subsonic有几个列名字段
OBJECT.xyzColumn
OBJECT.xyzColumn.QualifiedName
OBJECT.Columns.xyz
我过去不得不玩这些以获得我想要的价值。