我的查询是
DECLARE @Values TABLE
(
value NVARCHAR(255)
)
INSERT INTO @Values VALUES('BWE');
INSERT INTO @Values VALUES('BWT');
INSERT INTO @Values VALUES('IMO I');
INSERT INTO @Values VALUES('IMO II');
INSERT INTO @Values VALUES('BWE-E');
INSERT INTO @Values VALUES('BWE-EP');
INSERT INTO @Values VALUES('IMO III');
INSERT INTO @Values VALUES('BWM-EP(s)');
INSERT INTO @Values VALUES('BWM-EP');
select * from @Values
SELECT a.value
FROM @Values a
INNER JOIN (SELECT 'BWM-EP(s)' AS CLASS_NOTATION) b
ON LTRIM(RTRIM(b.CLASS_NOTATION)) like '%[^a-z0-9]' + LTRIM(RTRIM(a.VALUE)) + '[^a-z0-9]%'
or LTRIM(RTRIM(b.CLASS_NOTATION)) like LTRIM(RTRIM(a.VALUE)) + '[^a-z0-9]%'
or LTRIM(RTRIM(b.CLASS_NOTATION)) like '%[^a-z0-9]' + LTRIM(RTRIM(a.VALUE))
or LTRIM(RTRIM(b.CLASS_NOTATION)) = LTRIM(RTRIM(a.VALUE))
它适用于类符号的大多数情况。但是在这种特殊情况下,当我将 'BWM-EP(s)' 作为类符号时,它会同时为您提供 BWM-EP(s) 和 BWM-EP 。但结果应该只是 BWM-EP(s) 。怎么了 ?
正如我从答案中看到的那样,即使这个问题的根本原因是第二个 OR 条件。我不能排除该条件,因为当类符号为 BWE BWT 时我需要该条件。我该如何克服呢?