我需要從 SQL Server 表中回傳包含兩者的行_1。_2下面是我的查詢,即使上述兩個條件都不匹配,它也會回傳行。
據我所知,在使用帶有通配符的子句時,我可以使用[and]來匹配多個值。LIKE
DECLARE @TempTable AS TABLE (Col VARCHAR(MAX))
INSERT INTO @TempTable VALUES
('001098E2-5995-446F-87DC-BE71D2B30D37_2|69FA4BCD-C90B-4375-B08C-B3615C55500D_2'),
('0025F9BF-995D-4C88-BBD6-4C707A88BC32_1|F53668A8-F819-4309-BC0C-8DE4C2637419_2'),
('007BB00A-3B69-45FC-A265-1EC8B00E011A_2|0701649E-8BFE-4B03-8456-51E2D9169BD5_2|08950E50-80B2-4BDF-9FC7-3AB0AA4587AE_1')
SELECT * FROM @TempTable
WHERE (Col LIKE '%[_1]%' AND Col LIKE '%[_2]%')
我希望不回傳001098E2-5995-446F-87DC-BE71D2B30D37_2|69FA4BCD-C90B-4375-B08C-B3615C55500D_2,但 SQL Server 會回傳所有 3 條記錄。
提前致謝。
uj5u.com熱心網友回復:
SELECT * FROM @TempTable
WHERE (Col LIKE '%[_]1%' AND Col LIKE '%[_]2%')
使用通配符作為文字
您可以將通配符模式匹配字符用作文字字符。要將通配符用作文字字符,請將通配符括在方括號中。下表顯示了使用 LIKE 關鍵字和 [ ] 通配符的幾個示例。
uj5u.com熱心網友回復:
_也是一個匹配任意字符的通配符。您可以定義一個ESCAPE字符并將其轉義以匹配常規下劃線。您不需要[], 即這里的字符類。
SELECT *
FROM @temptable
WHERE col LIKE '%\_1%' ESCAPE '\'
AND col LIKE '%\_2%' ESCAPE '\';
db<>小提琴
uj5u.com熱心網友回復:
您可以將通配符模式匹配字符用作文字字符。
要將通配符用作文字字符,請將通配符括在方括號中。
WHERE (Col LIKE '%[_]1%' AND Col LIKE '%[_]2%')
你也可以像這樣轉義下劃線
WHERE (Col LIKE '%$_1%' ESCAPE '$')
AND (Col LIKE '%$_2%' ESCAPE '$')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418523.html
標籤:
