我试图在Excel 2007中运行的SQL查询中引入带有通配符的LIKE
子句,其中参数来自特定的Excel单元格:
SELECT Elen_SalesData_View.ItemCode, Elen_SalesData_View.ItemDescription,
Elen_SalesData_View.ItemValue, Elen_SalesData_View.Quantity,
Elen_SalesData_View.CustomerId, Elen_SalesData_View.CustomerName,
Elen_SalesData_View.SalesInvoiceId, Elen_SalesData_View.EffectiveDate,
Elen_SalesData_View.CountryId
FROM SM_Live.dbo.Elen_SalesData_View Elen_SalesData_View
WHERE (Elen_SalesData_View.EffectiveDate>=? And Elen_SalesData_View.EffectiveDate<=?)
AND (Elen_SalesData_View.CustomerName<>'PROMO')
AND (Elen_SalesData_View.ItemDescription LIKE '%'+?+'%')
EffectiveDate
参数正常运行并按预期恢复数据。但是自从我引入LIKE
- 查询运行,但什么也没有返回。
没有通配符也不会返回任何结果(输入完整描述):
(Elen_SalesData_View.ItemDescription LIKE ?)
对通配符或LIKE子句有限制吗?如果是这样,有办法吗? (我无法使用CONTAINS
,因为ItemDescription
字段不是FULLTEXT
)
答案 0 :(得分:0)
查看this reference,它表明%本身是通配符,但它可能取决于您使用的SQL的方言。如果是这种情况,那么您的LIKE
子句将只是LIKE '%'
但未经测试。
答案 1 :(得分:0)
我刚刚使用(Elen_SalesData_View.ItemDescription LIKE ?)
语法让这个工作,然后让包含参数值的单元格包含通配符。如果您不/不能包含通配符,则在单独的单元格中创建公式以将值包装为%字符,并将此单元格用作参数值。
里斯
答案 2 :(得分:0)
我的查询是正确的。实际的电子表格有问题。从头开始重做 - 它有效!
SELECT Elen_SalesData_View.ItemCode, Elen_SalesData_View.ItemDescription,
Elen_SalesData_View.ItemValue, Elen_SalesData_View.Quantity,
Elen_SalesData_View.CustomerId, Elen_SalesData_View.CustomerName,
Elen_SalesData_View.SalesInvoiceId, Elen_SalesData_View.EffectiveDate,
Elen_SalesData_View.CountryId
FROM SM_Live.dbo.Elen_SalesData_View Elen_SalesData_View
WHERE (Elen_SalesData_View.ItemDescription Like '%'+?+'%')
AND (Elen_SalesData_View.EffectiveDate>=?) AND (Elen_SalesData_View.EffectiveDate<=?)
AND (Elen_SalesData_View.CustomerName<>'PROMO')