我有一个表,其中一个列中包含部分重复值,这是表中的主键。我试着写一个查询来查找那些重复的内容并且无法弄明白。 例如:
Taxi(Number, id) - Number is primary key on the table
Values(123, 253)
Values(123-, 253)
Values(1 23,253)
根据要求将这些全部视为重复。 这是我试过的没有运气的查询
select * from taxi t where exists(
select 1 from taxi t2
where t1.id = t2.id
and t2.number like t1.number||'%')
这给了我所有的价值。任何帮助表示赞赏
答案 0 :(得分:1)
也许translate()
会做你想做的事:
select translate(number, '0- ', '0') as fixed_number
第一个字符串中0
之后的所有字符都将被删除。
所以,如果你想要重复:
select t.*
from (select translate(number, '0- , '0') as fixed_number, t.*,
count(*) over (partition by translate(number, '0- ', '0')) as cnt
from t
) t
where cnt > 1
order by fixed_number;
答案 1 :(得分:0)