我有一个表,products
其中有一product_id
列如下:
product_id
110177
110177T
177
我正在尝试过滤应该获取如下结果的产品结果,但它也在获取 id177
110177
110177T
询问 -select * from products where produuct_id like %'177'%
查询中的哪些更新以丢弃177
搜索结果中的字符串并仅获取其余两个?
我有一个表,products
其中有一product_id
列如下:
product_id
110177
110177T
177
我正在尝试过滤应该获取如下结果的产品结果,但它也在获取 id177
110177
110177T
询问 -select * from products where produuct_id like %'177'%
查询中的哪些更新以丢弃177
搜索结果中的字符串并仅获取其余两个?
如果要消除该
177
值,则必须执行以下操作(请参见此处的小提琴):并填充它:
然后运行以下 SQL:
结果:
请注意,
___177%
此处的(3 个下划线)谓词将选取所有具有 3 个字符(任何单个字符)后跟 177 后跟任何其他字符或没有字符的值。这是由于
%
(百分比)通配符和_
(下划线)之间的差异 - 这_
意味着占位符代表一个,并且恰好是一个字符,而%
通配符代表0 个或多个字符。所以,
177
没有被选中,因为它在 177 之前没有字符 -这里解释得很好。@Akina 提出的
!=
解决方案也将起作用,但这意味着提前知道要排除的值 - 我对您的问题的解读是您想要消除任何真正的短product_id
s 而不仅仅是特定的!如果您有更复杂的要求,您应该查看正则表达式 - 可以在此处找到来自 PostgreSQL 的示例 -此处的MySQL 文档。
ps 欢迎来到论坛!