0

当我使用 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 等来优化代码

谢谢

4

2 回答 2

0

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

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

于 2015-07-31T17:17:22.253 回答
0

您可以只使用选择运算符。我认为这会更快,但没有测试: 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 ...”

于 2016-06-24T15:13:31.817 回答