sql - SQL:使用 chr(10) 或 chr(13) 对列进行 LIKE 查询
问题描述
我正在做一个
select field1
from tablename
where field1 like '%xyz zrt bla bla trew%'
field1
是一个 clob 列,在它们之间'xyz zrt bla bla trew'
可能有新行字符,如 chr(10) 或 chr(13)。所以它可能是 'xyz\r\n\rzrt bla bla\n\n trew'
等
这些正在转换为一个(或多个空格)。因此,单词之间的任何空格都可以是真正的空格,也可以是这些换行符中的一个或多个。
我如何在我的LIKE
?
我正在使用 Oracle,但如果可能的话,我想使用适用于 SQL Server 等的东西。
解决方案
您可以先将 \n 和 \r 替换为空格,然后修剪空格,然后进行比较。这总是有效的,而且可能足够快。
但是,为了适当加快搜索过程,您可以将修剪结果存储在指定的列“field1_trim”中。
取决于您的需求 - 将修剪结果存储到临时表中可能就足够了,并且在空间/速度解决方案之间更加平衡。
例如:将以下查询的结果保存到临时表中,然后在其上运行您的查询
select
regexp_replace('[[:space:]]+', chr(32))
field1_trim,
<some unique row id to map to original table>
from table1;
推荐阅读
- c# - 如何确定两个“ref”变量是否引用同一个变量,即使为空?
- python - 缺少 python3 的 opencv cv2.so 绑定
- php - REST API 中的会话原则
- aframe - 在框架的文本实体中添加引导字形图标
- node.js - 如何使用 nodejs 在一天内运行 4 次 cron 作业?
- node.js - 为什么用户在 Microsoft Graph API 和 bot 框架中的用户 ID 之间具有不同的 ID 格式?
- oracle-apex - 如何在 Oracle APEX 5.1 中将图像放在导航列表中
- airflow - 从 Airflow 的数据库中删除 SubDag
- java - Junit restcotroller 测试方法
- javascript - 如何在rails控制器中替换内联javascript