Q&A

  • SQL에서 ':' 사용하기
TQuery문을 이용하여 String으로 된 SQL문장을 할당하여 실행을 시켰습니다.

그런데 ':'가 들어가면 Field 이름이 잘못 되었다는 메시지가 나옵니다.

예를 들어 'http://'의 경우 우선은 ':'를 여백으로 치환했을 경우 제대로

되지만, 그대로 실행시키면 인식이 안 되는 군요.

특수문자의 경우는 해결을 했는데 위의 경우는 해결이 잘 안되는군요.

TQuery문의 SQL에 ':'이 들어간 문장을 할당하여 사용하는 방법을 아시거나

혹시 비슷한 경험이 있는 분들은 답변을 부탁드립니다.

3  COMMENTS
  • Profile
    송종석 2001.04.17 23:27
    QuotedStr함수나 AnsiQuotedStr함수를 사용해 보세요.

    도움말을 참고하시면 됩니다.



    이명학 wrote:

    > TQuery문을 이용하여 String으로 된 SQL문장을 할당하여 실행을 시켰습니다.

    > 그런데 ':'가 들어가면 Field 이름이 잘못 되었다는 메시지가 나옵니다.

    > 예를 들어 'http://'의 경우 우선은 ':'를 여백으로 치환했을 경우 제대로

    > 되지만, 그대로 실행시키면 인식이 안 되는 군요.

    > 특수문자의 경우는 해결을 했는데 위의 경우는 해결이 잘 안되는군요.

    > TQuery문의 SQL에 ':'이 들어간 문장을 할당하여 사용하는 방법을 아시거나

    > 혹시 비슷한 경험이 있는 분들은 답변을 부탁드립니다.

  • Profile
    이희정 2001.04.17 20:20
    이명학 wrote:

    > TQuery문을 이용하여 String으로 된 SQL문장을 할당하여 실행을 시켰습니다.

    > 그런데 ':'가 들어가면 Field 이름이 잘못 되었다는 메시지가 나옵니다.

    > 예를 들어 'http://'의 경우 우선은 ':'를 여백으로 치환했을 경우 제대로

    > 되지만, 그대로 실행시키면 인식이 안 되는 군요.

    > 특수문자의 경우는 해결을 했는데 위의 경우는 해결이 잘 안되는군요.

    > TQuery문의 SQL에 ':'이 들어간 문장을 할당하여 사용하는 방법을 아시거나

    > 혹시 비슷한 경험이 있는 분들은 답변을 부탁드립니다.



    그게 말이져.. :는 SQL문에서 파라테타를 넘길 때 사용하는 특수문자라 그렇습니다.



    따라서 'http://' 값을 :STR로 치환해서



    Query.ParamByName('STR').AsString := 'http://';



    이렇게 해보세요.

  • Profile
    이명학 2001.04.17 21:11
    답변 감사드립니다.

    그런데 제가 다른 방식으로 테스트를 해 보았거든요.

    즉.. 간단하게 데이터베이스를 만들어서 처리를 했는데 이럴 경우는 잘 되거든요.

    오라클이나 MDB 모두 테스트를 했구요.



    procedure TForm1.Button1Click(Sender: TObject);

    var

    _sql : String;

    begin

    Database1.Open;

    _sql := 'INSERT INTO aaa (name) values ('''+':'+''')';

    if Query1.Active then Query1.Active := FALSE;

    Query1.SQL.Clear;

    Query1.SQL.Add(_sql);

    Query1.ExecSQL;

    Database1.Close;

    end;



    파라미터로 넘기는 게 아니라 직접 코딩했는데 되더라구요.

    우선 답변은 감사드리고, 편법으로 특수코드로 변환을 해서 처리를 하였습니다.

    다른 방법은 또 없는 지 혹시나 아시는 것 있으면 전수(?)를.. ^^