在我的数据库中,我必须过滤名称以 -N
结尾的记录,
但是当我制作 WHERE
时像以下查询一样的子句它不返回任何记录,因为 -
是通配符。
我在 Oracle 数据库中使用此查询:
select * from product where productname like '%-N'
但数据库有以该产品名称结尾的记录
最佳答案
起初我以为 Oracle 允许指定一个范围 [a-z]
在 LIKE
运算符(operator),这需要处理 -
以一种特殊的方式。所以,我的建议是逃避破折号:
select * from product where productname like '%\-N' ESCAPE '\'
https://docs.oracle.com/cd/B13789_01/server.101/b10759/conditions016.htm
另一方面,正如@Amadan 在评论中正确地说的那样,Oracle 的
LIKE
运算符只能识别两个通配符:_
和 %
.这意味着逃避
-
不应该改变任何东西。这意味着查询中的破折号很可能与表中的破折号不同。 Unicode 中有许多不同的破折号和连字符。这里是最常见的。连字符减号 (0x002D)、En-Dash (0x2013、Alt+0150)、Em-Dash (0x2014、Alt+0151)。
- – —
关于sql - 如何在 LIKE 查询中使用破折号 (-) 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256835/