我需要在列包含包含[ ]
. 当我使用LIKE
时,它将[]
作为通配符序列,并且不能按我的需要工作。
例如,我想搜索一个名为的列Address
并获取字符串包含的任何值[Sydney]
:
SELECT * FROM Location
WHERE Address LIKE '%[Sydney]%'
我不能使用CONTAINS()
,因为这不是全文索引列。
我需要在列包含包含[ ]
. 当我使用LIKE
时,它将[]
作为通配符序列,并且不能按我的需要工作。
例如,我想搜索一个名为的列Address
并获取字符串包含的任何值[Sydney]
:
SELECT * FROM Location
WHERE Address LIKE '%[Sydney]%'
我不能使用CONTAINS()
,因为这不是全文索引列。
一种选择是使用
ESCAPE
:当然,您需要选择一个不太可能自然出现在数据中的字符,否则可能会混淆其他搜索。
另一种选择是通过将第一个字符包含在其自己的转义序列中来对其进行转义,例如,在这种情况下,结尾
]
不被视为任何通配符序列的一部分,因为第一个被消除了:另一种选择是不使用支持通配符或通配符序列的模式。例如
CHARINDEX
: