oracle 从字符串中排除符号

uidvcgyl  于 2022-11-03  发布在  Oracle
关注(0)|答案(2)|浏览(122)

我必须筛选一个列(Product_Name),但我只需要显示包含符号'_'和'〈'的结果
有什么主意吗?

SELECT p.PRODUCT_NAME,oi.QUANTITY as "TOTAL_QUANTITY",o.ORDER_MODE
from PRODUCT_INFORMATION p
 join ORDER_ITEMS oi
 on p.PRODUCT_ID = oi.PRODUCT_ID
 join ORDERS o
 on oi.ORDER_ID = o.ORDER_ID
 where p.PRODUCT_NAME NOT IN ('<','(_)')
group by p.PRODUCT_NAME,o.ORDER_MODE,p.PRODUCT_ID,oi.PRODUCT_ID,oi.ORDER_ID,o.ORDER_ID,oi.QUANTITY
having oi.QUANTITY >= 200;
qv7cva1a

qv7cva1a1#

instr函数可能是一个选项:

where instr(p.product_name, '<') = 0
  and instr(p.product_name, '_') = 0
b4qexyjb

b4qexyjb2#

您可以使用NOT LIKE

SELECT p.PRODUCT_NAME,
       oi.QUANTITY as "TOTAL_QUANTITY",
       o.ORDER_MODE
from   PRODUCT_INFORMATION p
       join ORDER_ITEMS oi
       on p.PRODUCT_ID = oi.PRODUCT_ID
       join ORDERS o
       on oi.ORDER_ID = o.ORDER_ID
where  p.PRODUCT_NAME NOT LIKE '%<%'
AND    p.PRODUCT_NAME NOT LIKE '%_%'
group by
       p.PRODUCT_NAME,
       o.ORDER_MODE,
       p.PRODUCT_ID,
       oi.PRODUCT_ID,
       oi.ORDER_ID,
       o.ORDER_ID,
       oi.QUANTITY
having oi.QUANTITY >= 200;

TRANSLATE

SELECT p.PRODUCT_NAME,
       oi.QUANTITY as "TOTAL_QUANTITY",
       o.ORDER_MODE
from   PRODUCT_INFORMATION p
       join ORDER_ITEMS oi
       on p.PRODUCT_ID = oi.PRODUCT_ID
       join ORDERS o
       on oi.ORDER_ID = o.ORDER_ID
where  p.PRODUCT_NAME = TRANSLATE(p.PRODUCT_NAME, 'A<_', 'A')
group by
       p.PRODUCT_NAME,
       o.ORDER_MODE,
       p.PRODUCT_ID,
       oi.PRODUCT_ID,
       oi.ORDER_ID,
       o.ORDER_ID,
       oi.QUANTITY
having oi.QUANTITY >= 200;

相关问题