gpt4 book ai didi

oracle - 比较 VARCHAR2 与 CHAR 的最佳方式

转载 作者:行者123 更新时间:2023-12-05 00:26:02 24 4
gpt4 key购买 nike

我正在寻找将 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)

关于oracle - 比较 VARCHAR2 与 CHAR 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23083054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com