我正在查看另一位程序员编写的存储过程,我看到他们正在使用
SELECT * FROM dbo.names WHERE name LIKE '%%st%%ack%%flow%%'
我以前从未见过这种表示法。我的假设是,这种行为与
SELECT * FROM dbo.names WHERE name LIKE '%st%ack%flow%'
但是我之前从未见过,在网上也看不到讨论像这样的LIKE语句中使用双百分数的情况。有人可以解释两者之间的可能差异吗?
我希望在LIKE语句中使用%%和%是可以互换的,并且它们永远不会产生不同的结果。
答案 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 '%';