MS SQL Excel 查询通配符
MS SQL Excel Query wildcards
我试图在 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
- 查询运行,但 return 什么都没有。
没有通配符也不会 return 任何结果(已输入完整描述):
(Elen_SalesData_View.ItemDescription LIKE ?)
通配符或LIKE子句有限制吗?如果是这样,有没有办法解决它? (我不能使用 CONTAINS
,因为 ItemDescription
字段不是 FULLTEXT
)
查看 this reference,它表明 % 本身就是通配符,尽管它可能取决于您使用的 SQL 的方言。如果是这种情况,那么您的 LIKE
子句将只是 LIKE '%'
但未经测试。
我刚刚通过使用 (Elen_SalesData_View.ItemDescription LIKE ?)
语法,然后让包含参数值的单元格包含通配符来实现这一点。如果您不t/can不包含通配符,则在单独的单元格中创建一个公式,将值用 % 字符包装起来,并将此单元格用作参数值。
里斯
我的查询是正确的。实际的电子表格有问题。从头开始重做之后 - 它成功了!
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')
我试图在 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
- 查询运行,但 return 什么都没有。
没有通配符也不会 return 任何结果(已输入完整描述):
(Elen_SalesData_View.ItemDescription LIKE ?)
通配符或LIKE子句有限制吗?如果是这样,有没有办法解决它? (我不能使用 CONTAINS
,因为 ItemDescription
字段不是 FULLTEXT
)
查看 this reference,它表明 % 本身就是通配符,尽管它可能取决于您使用的 SQL 的方言。如果是这种情况,那么您的 LIKE
子句将只是 LIKE '%'
但未经测试。
我刚刚通过使用 (Elen_SalesData_View.ItemDescription LIKE ?)
语法,然后让包含参数值的单元格包含通配符来实现这一点。如果您不t/can不包含通配符,则在单独的单元格中创建一个公式,将值用 % 字符包装起来,并将此单元格用作参数值。
里斯
我的查询是正确的。实际的电子表格有问题。从头开始重做之后 - 它成功了!
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')