【问题标题】:universe U2.net SELECT wildcardUniverse U2.net SELECT 通配符
【发布时间】:2015-10-13 06:15:05
【问题描述】:

当我使用 SQL 查询 MS 访问或 MS SQL 时。我可以用下面的sql来检索数据

SELECT ORDER_NO,NAME FROM ORDER WHERE LEFT(ORDER_NO,6)='123456'

检索订单号以'123456'开头的记录

但 LEFT 在 Universe U2.net 中不起作用。

下面是做什么的,但是查询返回结果很慢。

SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO LIKE '%123456%'

我正在寻找 、LEFT、MID 等的替代方案来优化代码

谢谢

【问题讨论】:

    标签: wildcard universe


    【解决方案1】:

    如果你去掉第一个'%'会更快吗?您正在字段的任何部分寻找 123456,而不是从字段的开头开始。

    这需要读取和评估每条记录中每个该字段的整个值,而不仅仅是第一个字符。对于大量数据,这可能会有很大的不同,尤其是在非索引字段上。

    【讨论】:

      【解决方案2】:

      您可以只使用选择运算符。我认为这会更快,但没有测试: SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO = "123456]'

      对于中间有关键字的订单,您可以: SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO = "[123456]'

      对于以字符串结尾的订单: SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO = "[123456'

      [, ], [] 是 Ends With、Starts With、Includes。 我相信这些比 LIKE 查找要快。

      此外,您可以将 LIKE 与省略号通配符语法一起使用: SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO LIKE "...123456' SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO LIKE "...123456...' SELECT ORDER_NO,NAME FROM ORDER WHERE ORDER_NO LIKE "123456..."

      【讨论】:

      • 离题了,你确定你在这里做出了正确的评论选择吗? :(stackoverflow.com/review/suggested-edits/13144329
      • 不,不完全确定。我可能应该跳过审查而不是批准它。最重要的更改很好,但代码更难阅读。
      • 这是因为编辑没有做任何更改(它只是将撇号变成了 HTML 实体,破坏了代码)。绝对是跳过或拒绝候选人
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多