设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 专业 娱乐 服务 百度
当前位置: 首页 > 站长百科 > 正文

oracle – 比较VARCHAR2和CHAR的最佳方法

发布时间:2021-01-24 12:13 所属栏目:[站长百科] 来源:网络整理
导读:我正在寻找比较VARCHAR2(50 BYTE)和CHAR(12 BYTE)的最佳(也是最快)方法. 有两个数据库,第一个包含带有CHAR列的table1(下划线表示填充CHAR长度的空格字符) ID VALUE1 123-45___2 123-456__3 123-457__ 第二个数据库(table2)包含没有空格的VARCHAR2. ID VALU

我正在寻找比较VARCHAR2(50 BYTE)和CHAR(12 BYTE)的最佳(也是最快)方法.

有两个数据库,第一个包含带有CHAR列的table1(下划线表示填充CHAR长度的空格字符)

ID  VALUE
1   123-45___
2   123-456__
3   123-457__

第二个数据库(table2)包含没有空格的VARCHAR2.

ID  VALUE
4   123-45
5   123-456
6   123-457

所以,我想要这样的东西

SELECT table1.ID FROM table1 WHERE table1.VALUE = '123-45'

解决方法

由于table1.value列已编制索引,因此您不希望将其用于比较,因为这会阻止使用索引.所以你需要修改你正在查找的值:

SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45',12)

Oracle将使用您显示的查询隐式执行此操作,并仍将使用索引.如果您正在加入表格,那么相同,但是在连接期间是否填充或修剪取决于驱动程序是哪个表:

SELECT table1.ID,table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45',12)

要么:

SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value,12)

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读