我有一个表(我们称之为 MYTABLE(,在 MYTABLE 中我有一个列identity_number,但这个数字存储为字符串(就是这样,我无法更改它,因为我不是数据的所有者(。但是,有时这个数字在表中有一个前导零,有时没有(对于这个帐户相同,我无法更改它(。例如,VARCHAR '123456' 出现在列identity_number中,但 VARCHAR '0789123' 也出现在列中。现在我想从我的表上选择一个 *,其中我不在 where 子句中为我的参数提供前导零,但我停滞希望它返回两条记录。我怎样才能做到这一点?
所以:
select * from MYTABLE
where identity_number in ('123456', '789123')
应返回两条记录:"123456"和"0789123">
尝试这样的事情:
SELECT *
FROM MYTABLE
WHERE TRIM(LEADING '0' FROM identity_number) IN ('123456', '789123')
请尝试一下。但这在大表中可能会变慢。
select * from MYTABLE
where TRIM(LEADING '0' FROM identity_number) in ('123456', '789123')