如何简化字段的内容 ~~~~~~~~~~~~~~~~~ 是简化字段名称? select asdfcdd as asdf1, asdfrtyt as asdf2还是简化数据内容? 如果是简化数据内容的话,建议写个存储过程,然后用游标循环一下整个数据表,根据需要缩写后,再插入另一个表中
是简化数据内容的话,postren(小虫) 可以给个例子吗?
--没有测试,你测试一下 create procedure Procedure_1 as begin declare @col1 varchar(50) declare @col2 varchar(50) declare @i int declare @len int set @len = 4 --截取的长度
declare @mycursor cursor
set @mycursor =cursor local scroll for select col1 from table1 --源表 order by col1 open @mycursor fetch @mycursor into @col1 set @i = 0 while (@@fetch_status = 0) begin set @i = @i + 1 if len(@col1) > @len --如果长度大于截取的长度则截取 begin set @col2 = left(@col1, @len) + convert(varchar(5), @i) end else --否则直接在后面添加序号 begin set @col2 = @col1 + convert(varchar(5), @i) end insert into table2(col1) --插入目的表 values(@col2) fetch @mycursor into @col1 end close @mycursor deallocate @mycursor return 1 end
~~~~~~~~~~~~~~~~~
是简化字段名称? select asdfcdd as asdf1, asdfrtyt as asdf2还是简化数据内容?
如果是简化数据内容的话,建议写个存储过程,然后用游标循环一下整个数据表,根据需要缩写后,再插入另一个表中
可以给个例子吗?
create procedure Procedure_1
as
begin
declare @col1 varchar(50)
declare @col2 varchar(50)
declare @i int
declare @len int
set @len = 4 --截取的长度
declare @mycursor cursor
set @mycursor =cursor local scroll for
select col1
from table1 --源表
order by col1
open @mycursor
fetch @mycursor into @col1
set @i = 0
while (@@fetch_status = 0)
begin
set @i = @i + 1
if len(@col1) > @len --如果长度大于截取的长度则截取
begin
set @col2 = left(@col1, @len) + convert(varchar(5), @i)
end else --否则直接在后面添加序号
begin
set @col2 = @col1 + convert(varchar(5), @i)
end
insert into table2(col1) --插入目的表
values(@col2)
fetch @mycursor into @col1
end
close @mycursor
deallocate @mycursor
return 1
end
你这个过程只是截取大于4的内容
和不是我所要的
我上面的例子只不过是刚好简化后变成五位而已
实际上是不一定的
例如
aideipyyw
aids
airjt
bdfgrwqiti
bdfgt
bdfgq05g要实现转化后的结果如下:
ai1
ai2
ai3
bdfg1
bdfg2
bdfg3
s :string;
s:='abcdef';
s:=copy(s,4);
showmessage(s);
是不是想要这个?
你讲的方法试过了
但是不的。
ASDF
ASDG
ASE
是改写成
ASD1
ASD2
ASE3
???
关键是比较的深度.
但是都不适合
我里面的字段内容是有药名的每个字的第一个拼音码
所以可以讲是没什么规律的
只是有些前面几个相同
例如:
葡萄糖液100ML
葡萄糖液500ML
............
对应的字段内容是
PTTY100ML
PTTY500ML
............现在就是想检索的时候比较快
如果其余结果都没
PTTY开头的话就转化成
P1
P2
转化的时候最短要保留2位