代码有问题:
SELECT Konta.ID, Konta.Okres, Konta.Symbol, Konta.Nazwa
FROM ep15_opisie.dbo.Konta Konta
WHERE (LEN(Konta.Symbol)='5') AND (((Konta.Symbol Like '%221%') OR (Konta.Symbol Like '%222%') OR (Konta.Symbol Like '%302%') OR (Konta.Symbol Like '%700%'))
但我正在使用的程序(Microsoft Query)将代码更改为:
SELECT Konta.ID, Konta.Okres, Konta.Symbol, Konta.Nazwa
FROM ep15_opisie.dbo.Konta Konta
WHERE (Konta.Symbol Like '%221%') AND (LEN(Konta.Symbol)='5') OR (Konta.Symbol Like '%222%') AND (LEN(Konta.Symbol)='5') OR (Konta.Symbol Like '%302%') AND (LEN(Konta.Symbol)='5') OR (Konta.Symbol Like '%700%') AND (LEN(Konta.Symbol)='5')
它乘以LEN参数。这对我来说没有意义,因为我希望所有的争论都有5的LEN,但不同的像'XXX'。我正在使用SQL Server。
只使用一个LEN参数的最佳方法是什么?
答案 0 :(得分:0)
我认为解析器逻辑正确。无论如何,尝试写这样的东西怎么样。我认为表演可能会保持不变。
SELECT *
FROM (
SELECT Konta.ID
,Konta.Okres
,Konta.Symbol
,Konta.Nazwa
FROM ep15_opisie.dbo.Konta Konta
WHERE (
(
(Konta.Symbol LIKE '%221%')
OR (Konta.Symbol LIKE '%222%')
OR (Konta.Symbol LIKE '%302%')
OR (Konta.Symbol LIKE '%700%')
)
)
) Konta
WHERE (LEN(Konta.Symbol) = '5')