2つのテーブルの”氏名”を等しいかチェックしたいです。
テーブル①(SNAME)
苗字 名前
テーブル②(SNAME)
苗字 名前
苗字と名前の間に半角全角スペースが混在しています。
お互いの苗字と名前を詰めて比較する方法はありませんか?
よろしくお願いいたします。
IBQSo.Close;
IBQSo.SQL.Clear;
IBQSo.SQL.Add('SELECT * FROM テーブル①');
IBQSo.Open;
IBQSo.First;
SameCnt := 0;
While not IBQSo.Eof do begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('SELECT * FROM テーブル② WHERE');
IBQuery1.SQL.Add('SNAME = :SNAME');
IBQuery1.ParamByName('SNAME').AsString := Trim(IBQSo.FieldByName('SNAME').AsString);
IBQuery1.OPEN;
if IBQuery1.RecordCount > 0 Then
inc(SameCnt);
IBQSo.Next;
end;
SQLにこだわらなければ、半角、全角スペースを除いた文字列を比較するだけのような気がしますが…
InterBaseならば、ストアドプロシジャーが使えるので、そちらで処理するか、
プログラム中で半角、全角スペースを除いた文字列比較をするかでしょうね。
UDFでする方法もあります。
フロントでTRIMじゃなくてSQLでREPLACEを使えばいいと思います。
SELECT時にREPLACEして取得すればOKかと。
まぁ、フロントでStringReplace(ReplaceString?)でもいいですが。
ツイート | ![]() |