使用LIKE'%% x %%'与使用LIKE'%x%'是否有所不同?

时间:2019-07-16 18:05:42

标签: sql

我正在查看另一位程序员编写的存储过程,我看到他们正在使用

SELECT * FROM dbo.names WHERE name LIKE '%%st%%ack%%flow%%'

我以前从未见过这种表示法。我的假设是,这种行为与

SELECT * FROM dbo.names WHERE name LIKE '%st%ack%flow%'

但是我之前从未见过,在网上也看不到讨论像这样的LIKE语句中使用双百分数的情况。有人可以解释两者之间的可能差异吗?

我希望在LIKE语句中使用%%和%是可以互换的,并且它们永远不会产生不同的结果。

1 个答案:

答案 0 :(得分:4)

从字面上看,两者之间没有区别

SELECT * FROM dbo.names WHERE name LIKE '%%st%%ack%%flow%%'

SELECT * FROM dbo.names WHERE name LIKE '%st%ack%flow%'

%通配符允许任何字符或不允许字符。


唯一的区别是%被转义了:

CREATE TABLE names(name VARCHAR(10));
INSERT INTO names(name) VALUES('%b');
INSERT INTO names(name) VALUES('%ab');

SELECT * FROM names WHERE name LIKE '%%b';
SELECT * FROM names WHERE name LIKE '%%b' ESCAPE '%';

db<>fiddle demo