Sql 正在使用LIKE';%%x%%';不同于使用LIKE';%x%';?

Sql 正在使用LIKE';%%x%%';不同于使用LIKE';%x%';?,sql,Sql,我正在看另一个程序员编写的存储过程,我看到他们正在使用 SELECT * FROM dbo.names WHERE name LIKE '%%st%%ack%%flow%%' 我以前从未见过这种符号。我的假设是,这与 SELECT * FROM dbo.names WHERE name LIKE '%st%ack%flow%' 但我以前从未见过这种情况,而且我在网上也没有看到过在类似的声明中讨论使用双百分比的情况。有人能解释一下两者之间可能的区别吗 我希望在LIKE语句中使用%%和%是可以互

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

SELECT * FROM dbo.names WHERE name LIKE '%%st%%ack%%flow%%'
我以前从未见过这种符号。我的假设是,这与

SELECT * FROM dbo.names WHERE name LIKE '%st%ack%flow%'
但我以前从未见过这种情况,而且我在网上也没有看到过在类似的声明中讨论使用双百分比的情况。有人能解释一下两者之间可能的区别吗


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

以下两种语句在文字上没有区别:

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 '%';

以下两者在文字上没有区别:

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 '%';

他可能会混淆嵌入式SQL,在某些情况下,百分比符号需要转义。但是在功能上应该没有区别,除了可能稍微慢一点,因为表达式稍微复杂一点。您是否在字符串格式上下文中看到
%%
?如中所示,使用C中的
printf
函数,或Java中的
String.format
,或类似的东西?@My呈请否这是在T-SQL查询上下文中。@MatthewI是的,我理解。我的意思是,您是否看到了Java应用程序中的
字符串
中的第一个示例,并且Java应用程序正在将该字符串传递到数据库驱动程序库。例如:
connectionObject.executeQuery(String.format(“示例1,带%%s”,参数,用于,字符串,格式))%%
?如中所示,使用C中的
printf
函数,或Java中的
String.format
,或类似的东西?@My呈请否这是在T-SQL查询上下文中。@MatthewI是的,我理解。我的意思是,您是否看到了Java应用程序中的
字符串
中的第一个示例,并且Java应用程序正在将该字符串传递到数据库驱动程序库。例如:
connectionObject.executeQuery(String.format(“示例1,带%%s”,参数,用于,字符串,格式))或类似。