SQL標準は、式の中で異なるタイプのデータを結合させることについて、極めて厳しいルールを定めています。通常DBMSが自動変換を行います。しかしSQL標準は、数値と文字データの比較を行おうとした場合、DBMSはエラーを生成しなければならないとしています。このコンテキストにおいて、CAST式はとても重要です。使用するプログラムのデータ型が、SQL標準でサポートされる型と一致しない場合は特にそうです。
SQLクエリの結果を配列に受け取るのクエリをCAST式を使用するよう若干変更したものを以下に示します。
 - SQLコードの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 ARRAY TEXT(aTitles;0)
 ARRAY TEXT(aDirectors;0)
 ARRAY TEXT(aMedias;0)
 
 Begin SQL
 SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets
 FROM MOVIES
 WHERE Year_of_Movie >= CAST('1960' AS INT)
 INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;
 End SQL
 
 ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
 
- 汎用SQLコマンドの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 ARRAY TEXT(aTitles;0)
 ARRAY TEXT(aDirectors;0)
 ARRAY TEXT(aMedias;0)
 C_TEXT($tQueryTxt)
   
 REDUCE SELECTION([MOVIES];0)
 SQL LOGIN(SQL_INTERNAL;"";"")
 $tQueryTxt:=""
 $tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets"
 $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
 $tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= CAST('1960' AS INT)"
 SQL EXECUTE($tQueryTxt;aMovieYear;aTitles;aDirectors;aMedias;aSoldTickets)
 SQL LOAD RECORD(SQL all records)
 SQL LOGOUT
 
 ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
- QUERY BY SQLコマンドの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 ARRAY TEXT(aTitles;0)
 ARRAY TEXT(aDirectors;0)
 ARRAY TEXT(aMedias;0)
 
 REDUCE SELECTION([MOVIES];0)
 QUERY BY SQL([MOVIES];"Year_of_Movie >= CAST('1960' AS INT)")
 SELECTION TO ARRAY([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;[MOVIES]Media;aMedias;[MOVIES]Sold_Tickets;aSoldTickets)
 
 ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
- SQLのEXECUTE IMMEDIATEコマンドの場合:
 
  ARRAY LONGINT(aSoldTickets;0)
 ARRAY INTEGER(aMovieYear;0)
 ARRAY TEXT(aTitles;0)
 ARRAY TEXT(aDirectors;0)
 ARRAY TEXT(aMedias;0)
 C_TEXT($tQueryTxt)
 
 REDUCE SELECTION([MOVIES];0)
 $tQueryTxt:=""
 $tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets"
 $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
 $tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= CAST('1960' AS INT)"
 $tQueryTxt:=$tQueryTxt+" INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;"
 Begin SQL
 EXECUTE IMMEDIATE :$tQueryTxt;
 End SQL
 
 ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
 
これらをテストするには、4D SQL Code Samplesデータベースを起動してメインウィンドウを表示させます。クエリモードを選択してUsing CASTボタンをクリックします。