在SQL中搜索“_”显示所有记录

问题描述 投票:1回答:3

我有一个查询用'_'搜索名称,但它显示了表的所有记录。有人会告诉我我的剧本有什么问题。谢谢。

有我的SQL脚本:

declare @Name varchar(50)='_'
select *  FROM products WHERE  Name like @Name +'%'
mysql sql
3个回答
3
投票

_是一个匹配任何角色的通配符。您可以选择另一个角色来逃避它。说:

WHERE Name like replace(@Name, '_', '$_') + '%' ESCAPE '$'

这可能会很麻烦,所以你可以使用不同的逻辑:

WHERE LEFT(Name, LEN(@Name)) = @Name

不幸的是,这种配方阻止了索引的使用。


0
投票

根据MySQL指南,“_”字符在类似评估中使用时是通配符,请参阅https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html

如果你想匹配第一个字母,那么可能左边会更好,请参阅https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_left


0
投票

要测试通配符的文字实例,请在其前面加上转义字符。例如。

\ _匹配一个_字符

© www.soinside.com 2019 - 2024. All rights reserved.