ORACLE 查询:Select 当值的名称中包含“/”时的文本
ORACLE Query: Select Text when value has "/" in the name
我需要 select 个 table 符合以下条件的项目:
1/2 吨卡车 W/TOOLS (A) 或 1/2 吨卡车 W/TOOLS (B)
但不匹配 3/4-1 吨卡车 W/TOOLS 或任何其他组合。
我试过使用通配符。
Select *
FROM Table
WHERE UNIT_ID LIKE '1/2 TON TRCK W/TOOLS (A)'
这不起作用。唯一似乎有效的方法是使用“%Tools”。不幸的是,这会引入我不想要的其他记录。
我也试过使用 REGEX
WHERE regexp_like (unit_id, ' ^ (1/2 TON TRCK W/TOOLS) ')
Select *
FROM Table
WHERE UNIT_ID in('1/2 TON TRCK W/TOOLS (A)', '1/2 TON TRCK W/TOOLS (B)')
尽管您的示例中没有通配符,但它应该是
Select *
FROM Table
WHERE UNIT_ID LIKE '1/2 TON TRCK W/TOOLS (%)'
如果没有 % 或 _
将无法点赞
如果我在 A
周围的括号中包含通配符,则 REGEX 确实有效
WHERE regexp_like (unit_id, '(1/2 TON TRCK W/TOOLS.A.)')
或
WHERE UNIT_ID LIKE '1/2 TON TRCK W/TOOLS (%)'
正如 kayakpim 指出的那样
冒着打死马的风险,您可以使用 regexp_like,只需转义括号,因为它们在正则表达式 'language' 中具有特殊含义,并使用竖线符号表示 OR。此正则表达式专门查找文字括号内的 'A' 或 'B' 字符(由方括号表示)。
SQL> with tbl(str) as (
select '1/2 TON TRCK W/TOOLS (A)' from dual union all
select '1/2 TON TRCK W/TOOLS (B)' from dual union all
select '3/4-1 TON TRUCK W/TOOLS' from dual
)
select str
from tbl
where regexp_like(str, '1/2 TON TRCK W/TOOLS \([A|B]\)');
STR
------------------------
1/2 TON TRCK W/TOOLS (A)
1/2 TON TRCK W/TOOLS (B)
SQL>
我需要 select 个 table 符合以下条件的项目:
1/2 吨卡车 W/TOOLS (A) 或 1/2 吨卡车 W/TOOLS (B)
但不匹配 3/4-1 吨卡车 W/TOOLS 或任何其他组合。
我试过使用通配符。
Select *
FROM Table
WHERE UNIT_ID LIKE '1/2 TON TRCK W/TOOLS (A)'
这不起作用。唯一似乎有效的方法是使用“%Tools”。不幸的是,这会引入我不想要的其他记录。
我也试过使用 REGEX
WHERE regexp_like (unit_id, ' ^ (1/2 TON TRCK W/TOOLS) ')
Select *
FROM Table
WHERE UNIT_ID in('1/2 TON TRCK W/TOOLS (A)', '1/2 TON TRCK W/TOOLS (B)')
尽管您的示例中没有通配符,但它应该是
Select *
FROM Table
WHERE UNIT_ID LIKE '1/2 TON TRCK W/TOOLS (%)'
如果没有 % 或 _
将无法点赞如果我在 A
周围的括号中包含通配符,则 REGEX 确实有效WHERE regexp_like (unit_id, '(1/2 TON TRCK W/TOOLS.A.)')
或
WHERE UNIT_ID LIKE '1/2 TON TRCK W/TOOLS (%)'
正如 kayakpim 指出的那样
冒着打死马的风险,您可以使用 regexp_like,只需转义括号,因为它们在正则表达式 'language' 中具有特殊含义,并使用竖线符号表示 OR。此正则表达式专门查找文字括号内的 'A' 或 'B' 字符(由方括号表示)。
SQL> with tbl(str) as (
select '1/2 TON TRCK W/TOOLS (A)' from dual union all
select '1/2 TON TRCK W/TOOLS (B)' from dual union all
select '3/4-1 TON TRUCK W/TOOLS' from dual
)
select str
from tbl
where regexp_like(str, '1/2 TON TRCK W/TOOLS \([A|B]\)');
STR
------------------------
1/2 TON TRCK W/TOOLS (A)
1/2 TON TRCK W/TOOLS (B)
SQL>