查询:
select *
from etm
where emp_id LIKE '009090%'
AND directnumber LIKE '111 123 12345x 67%'
AND cellnumber LIKE '123456789%'
AND phone LIKE '111 123 12345x 67';
数据库:oracle 11g
当LIKE运算符中包含小X字符(12345 x )时,选择查询不会返回任何记录。
当我用任何其他字符(小/大写)替换它时((12345 Y )),但用小x替换它也不起作用。
我无法修改查询,在插入数据时是否可以在数据库级别完成任何操作? 我们正在批量导入数据。
答案 0 :(得分:0)
我看不出问题 - 这是一个展示的测试用例:
with sample_data as (select '123x 456' str from dual union all
select '123 456' str from dual union all
select '123x' str from dual union all
select 'abcx 93s' str from dual)
select *
from sample_data
where str like '123x%';
STR
--------
123x 456
123x
因此,您可以看到我的搜索已经撤回了str列以123x
开头的行。
但是,如果我搜索以123y
开头的行,则不会返回任何行:
with sample_data as (select '123x 456' str from dual union all
select '123 456' str from dual union all
select '123x' str from dual union all
select 'abcx 93s' str from dual)
select *
from sample_data
where str like '123y%';
no rows selected.
因为str列没有以123y
开头的行。
您的数据是否类似,如果在x
个条件中有一个或多个like
,则没有任何行匹配所有过滤条件?
答案 1 :(得分:0)
我尚未验证此查询,但它应该有效。
select *
from etm
where emp_id LIKE '009090%'
AND (directnumber LIKE '111%' or directnumber LIKE '123%' .....)
AND cellnumber LIKE '123456789%'
AND (phone LIKE '111' or phone LIKE '123' .......);
参考: https://community.oracle.com/thread/1096523?start=0&tstart=0