SELECT VINNO
FROM SRV_ORDER_F
WHERE right(VINNO,7) = 'G123456' AND NVL(DELETEFLAG, '0') <> '1'为什么会弹出 right 无效的标识符啊?我就是想取VINNO的右7位.
FROM SRV_ORDER_F
WHERE right(VINNO,7) = 'G123456' AND NVL(DELETEFLAG, '0') <> '1'为什么会弹出 right 无效的标识符啊?我就是想取VINNO的右7位.
substr(VINNO,length(VINNO)-7)
我本来是
SELECT
VINNO
FROM SRV_ORDER_F
WHERE TRIM(VINNO) LIKE '%G123456'
但是速度很慢很慢,数据量大,SQL执行的时间已经超过1分钟,
这样能快些吗?怎么样能更快些呢?
你这样肯定很慢,即使有索引,也用不到,前面是匹配,针对TRIM(VINNO),建立反向函数索引吧。
VINNO
FROM SRV_ORDER_F
WHERE REVERSE(TRIM(VINNO)) LIKE REVERSE('G123456') || '%'
LIKE '%G123456' 可以改写成LIKE '654321G%'
这样,就可以用到索引扫描了。
应该是substr(VINNO,-7)