0

目前我正在做一些事情。

using (var IDatabaseQuery = Lightningbolt.GetDatabaseManager().CreateQueryObject())
        {
            IDatabaseQuery.SetQuery("SELECT * FROM catalogue_baseitems WHERE name LIKE '%hc2_%' OR name LIKE '%hc3_';");
            data = IDatabaseQuery.FetchTable();
        }

这就是我使用的,我想得到所有以 hc2_ 和 hc3_ 开头的项目,但是,我只得到以 hc2_ 开头的项目。在 SQL 中还包含以 hc3_ 开头的项目,但在执行查询时不显示。我错了什么?

4

3 回答 3

4

如果您想要以or开头的项目,则需要进行两项更改:hc2_hc3_

  1. 不要%在开头使用,并且
  2. 转义下划线,因为它掩盖了“任何一个字符”

尝试这样的事情:

SELECT * FROM catalogue_baseitems WHERE name LIKE 'hc2\_%' OR name LIKE 'hc3\_%'

请注意,%hc2_%它将匹配以下任何示例:

  • abchc2X(因为前导%和下划线会匹配X
  • hc23(因为下划线将匹配3
  • ... 等等
于 2013-05-09T20:41:25.810 回答
2

你想要结果,它在开头包含hc2_and hc3_,那么你需要使用这样的子句'hc2_%'or hc3_%

您正在获得 hc2_ 的结果,因为您正在使用'%hc2_%',这将返回包含字符串中hc2_任何位置的任何字符串。

将您的查询更改为此

IDatabaseQuery.SetQuery("SELECT * FROM catalogue_baseitems WHERE name LIKE 'hc2\_%' OR name LIKE 'hc3\_%';");

别忘了underscore(_),这是一个通配符

于 2013-05-09T20:39:47.607 回答
1

您缺少第二个百分号:'%hc3_%'

于 2013-05-09T20:39:50.793 回答