function GetPYCode(HanStr: String) : String;//提取汉字的汉语拼音首字母函数。
const
PRCCodePage=936;
{ 数据来源于汉字码表 }
VowelPos: array['`'..'{'] of Integer = ($0000,$B0A1,$b0c5,$b2c1,$b4ee,
$b6ea,$b7a2,$b8c1,$b9fe,$0000,$bbf7,$bfa8,
$c0ac,$c2e8,$c4c3,$c5b6,$c5be,$c6da,$c8bb,
$c8f6,$cbfa,$0000,$0000,$cdda,$cef4,$d1b9,
$d4d1,$FFFF);
var
sVol : string;
Vowels : String;
i:Char;
HanziCode:Word;
lps,p1,p2:Pointer;
begin
sVol := HanStr;
GetMem(lps,Length(sVol)+1);
StrPCopy(lps,sVol);
p1:=lps;
p2:=CharNextEx(PRCCodePage,p1,0);
Repeat
if Abs(Longint(p2)-Longint(p1))=2 then
begin
HanziCode:=Word(p1^);
HanziCode:=swap(HanziCode);
for i:='`' to '{' do
begin
if VowelPos[i]>HanziCode then
begin
if i='a' then
Vowels:=Vowels+i
else if i='j' then //因为汉语内没有以“I”开头的拼音,遇到这种情况就是遇到了“H”
Vowels:=Vowels+'h'
else if i='w' then // 没有以“U、V”开头的拼音,遇到这种情况就是遇到了“T”
Vowels:=Vowels+'t'
else
Vowels:=Vowels+Chr(Ord(i)-1);
break;
end;
end;
end
else begin
Vowels:=Vowels+PChar(p1)^; //非汉字不转换
end;
p1:=p2;
p2:=CharNextEx(PRCCodePage,p1,0);
Until p1=p2;
Result:=Vowels;
//Result:=UpperCase(Vowels);
FreeMem(lps);
end;
如果你确定有‘张’和‘丰’,不确定‘山’和‘珊’:
第1步:"SELECT * FROM tb WHERE name LIKE '%张%'
INTERSECT
SELECT * FROM tb WHERE name LIKE '%丰%' "
第2步:将‘珊’字及所有1步的结果集中名字转换为拼音,查“shan”。
^-^