我有一个列名地址,它由一些地址组成,中间有“%”:
Address
--------------------
Aman Ja%lan%
Stree% Ro%ad
等等等等
我如何编写 LIKE 运算符来找到该模式?
我试过了:
declare @var char(1)
set @var='!%'
select Address from Accomodation where Address like '%'+@var+'%'
我有一个列名地址,它由一些地址组成,中间有“%”:
Address
--------------------
Aman Ja%lan%
Stree% Ro%ad
等等等等
我如何编写 LIKE 运算符来找到该模式?
我试过了:
declare @var char(1)
set @var='!%'
select Address from Accomodation where Address like '%'+@var+'%'
我会用
WHERE columnName LIKE '%[%]%'
SQL Server 存储字符串摘要统计信息,用于估计将匹配LIKE
子句的行数。当使用方括号语法时,基数估计会更好,并导致更合适的计划。
对此连接项目的响应状态
在存在用户定义的转义字符的情况下,我们不支持精确的基数估计。所以我们可能会得到一个糟糕的估计和一个糟糕的计划。我们将考虑在未来的版本中解决此问题。
一个例子
CREATE TABLE T
(
X VARCHAR(50),
Y CHAR(2000) NULL
)
CREATE NONCLUSTERED INDEX IX ON T(X)
INSERT INTO T (X)
SELECT TOP (5) '10% off'
FROM master..spt_values
UNION ALL
SELECT TOP (100000) 'blah'
FROM master..spt_values v1, master..spt_values v2
SET STATISTICS IO ON;
SELECT *
FROM T
WHERE X LIKE '%[%]%'
SELECT *
FROM T
WHERE X LIKE '%\%%' ESCAPE '\'
显示第一个查询的 457 个逻辑读取和第二个查询的 33,335 个。
尝试这个:
declare @var char(3)
set @var='[%]'
select Address from Accomodation where Address like '%'+@var+'%'
您必须使用 [] 取消通配符的效果,因此您将 % 视为普通字符,与字符 _ 同上