pra*_*tik 34 sql sql-server sql-like
我有一个SQL查询如下.
Select * from table
where name like '%' + search_criteria + '%'
Run Code Online (Sandbox Code Playgroud)
如果search_criteria ='abc',它将返回包含xxxabcxxxx
哪个数据的数据.
但是如果我的search_criteria ='abc%',它仍将返回包含的数据xxxabcxxx
,但不应该是这种情况.
我该如何处理这种情况?
Ale*_* K. 29
如果您希望将%
符号search_criteria
视为文字字符而不是通配符,请将其转义为[%]
... where name like '%' + replace(search_criteria, '%', '[%]') + '%'
Run Code Online (Sandbox Code Playgroud)
Gor*_*off 12
最简单的解决方案是完全免除"喜欢":
Select *
from table
where charindex(search_criteria, name) > 0
Run Code Online (Sandbox Code Playgroud)
我更喜欢charindex.从历史上看,它有更好的性能,但我不确定它现在是否有很大的不同.
使用转义条款:
select *
from (select '123abc456' AS result from dual
union all
select '123abc%456' AS result from dual
)
WHERE result LIKE '%abc\%%' escape '\'
Run Code Online (Sandbox Code Playgroud)
结果
123abc%456
Run Code Online (Sandbox Code Playgroud)
您可以将转义字符设置为您想要的任何内容.在这种情况下,默认为'\'.转义'\%'成为文字,第二个'%'不转义,所以再次使用外卡.
要在 sql 中转义字符,您可以使用!
:
示例 - 使用转义字符
了解如何在模式匹配时“转义字符”很重要。这些示例专门处理 Oracle 中的转义字符。
假设您想在 SQL LIKE 条件中搜索 % 或 _ 字符。您可以使用转义字符执行此操作。
请注意,您只能将转义字符定义为单个字符(长度为 1)。
例如:
SELECT *
FROM suppliers
WHERE supplier_name LIKE '!%' escape '!';
Run Code Online (Sandbox Code Playgroud)
此 SQL LIKE 条件示例标识了 ! 字符作为转义字符。此语句将返回名称为 % 的所有供应商。
这是在 SQL LIKE 条件中使用转义字符的另一个更复杂的示例。
SELECT *
FROM suppliers
WHERE supplier_name LIKE 'H%!%' escape '!';
Run Code Online (Sandbox Code Playgroud)
此 SQL LIKE 条件示例返回名称以 H 开头并以 % 结尾的所有供应商。例如,它会返回一个诸如“Hello%”之类的值。
您还可以在 SQL LIKE 条件中使用带有 _ 字符的转义字符。
例如:
SELECT *
FROM suppliers
WHERE supplier_name LIKE 'H%!_' escape '!';
Run Code Online (Sandbox Code Playgroud)
此 SQL LIKE 条件示例返回名称以 H 开头并以 _ 结尾的所有供应商。例如,它会返回一个诸如“Hello_”之类的值。
参考:sql/like
归档时间: |
|
查看次数: |
350974 次 |
最近记录: |