文字列の比較をするには?


せいこ  2006-12-15 02:03:47  No: 24240

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;


もにゃ  2006-12-15 03:58:23  No: 24241

SQLにこだわらなければ、半角、全角スペースを除いた文字列を比較するだけのような気がしますが…


HOta  2006-12-15 22:38:05  No: 24242

InterBaseならば、ストアドプロシジャーが使えるので、そちらで処理するか、
プログラム中で半角、全角スペースを除いた文字列比較をするかでしょうね。
UDFでする方法もあります。


はだしのげん  2006-12-16 01:53:47  No: 24243

フロントでTRIMじゃなくてSQLでREPLACEを使えばいいと思います。
SELECT時にREPLACEして取得すればOKかと。
まぁ、フロントでStringReplace(ReplaceString?)でもいいですが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加