现有问题如下:
    在一个表内,有一个索引字段和名称字段,都作为关键字段匹配表中的记录;添加数据时,可以使用相同的索引和名称字段(其他关键字段不同),但是表中不存在索引和名称不匹配的记录(如:两条记录索引相同,名称不相同;或索引不相同,名称相同)。
    现在对表中所有的记录进行某些操作:如删除名称字段中的一些字符,结果造成了记录存在索引不相同,名称相同的情况,数据出现了不一致。
    请教各位大虾:
    1、如何判断一个表中存在上述情况的记录?
    2、对索引不相同,但名称相同的记录,要将索引添加到名称后(即:修改成名称+'-'+索引),但是名称长度不允许超过32字符(对于加上索引后长度超过32字符的,需要删除名称的几个字符,然后再添加索引),如何操作实现呢?
    注意:索引不超过5个字符!    偶现在对第二个问题,不知如何实现!

解决方案 »

  1.   

    select * from tablename a  where exists(select 1 from tablename where namecolumn=a.namecolumn and indexcolumn<>a.indexcolumn)update a set namecolumn=substring(namecolumn+'-'+indexcolumn,1,(case when len(namecolumn+indexcolumn)>=31 then 32 else len(namecolumn+indexcolumn)+1 end))
    from tablename a where exists(select 1 from tablename where namecolumn=a.namecolumn and indexcolumn<>a.indexcolumn)