oracle – 比较VARCHAR2和CHAR的最佳方法
发布时间:2021-02-23 05:45:16 所属栏目:站长百科 来源:网络整理
导读:我正在寻找比较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) (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |