この記事は、access と SQL Server の構文上の違いを簡単にまとめたものです。
1. 差別化された関数とソリューション
以下に示すソリューションの関数は、untDataBase ユニットの TAdoConn クラスのメソッドで定義されています。
# 2. Access と SQLSERVER で部分的に同じデータベース関数とキーワード リスト #1. 関数 2. キーワード 3. Access とステートメント SqlServer のステートメント構文の違い1. Inser Into…..Select… From ステートメント: ACCESS の次のステートメント Insert INTOPubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) (200201、Acc_id、Acc_Pid、Acc_name、acc_short、Acc_Comment、Acc_Pro、acc_type、Sub_id_flag、acc_index FROM PubSubJectAcc Where PubSubJectAcc.co_type='03')中後"(200201****** を選択)実行するには、次のように、.co_Type=' 03')" を削除する必要があります: Insert INTOPubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short, Acc_Comment,Acc_Pro,acc_type,Sub_id_flag) ,acc_index) PubSubJectAcc から 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index を選択します。ここで、PubSubJectAcc.co_type='03'SQL SERVER Medium ではすべて OK2. 内部結合ステートメント 1StrSql:='select a.user_id,a.user_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c .copy_id=c.copy_id ) a.user_id=c.user_id wherea.user_opcode=''' EdtUserOpCode.text '''' And copy_name='''' Tmpcopyname '''';を変更する必要がありますStrSql:='a.user_id=c の sysuser a 内部結合 (syscopysuser c 内部結合 syscopys b on c.copy_id=d.copy_id) から a.user_id、a.user_opcode、b.copy_name を選択します。 .user_id wherea.user_opcode=''' EdtUserOpCode.text '''' And copy_name='''' Tmpcopyname '''';このコード行の取得 条件エラー: C .copy_id=C.Copy_id は c.copy_id=d.copy_id 注: どちらの書き込みメソッドも SQL-SERVER で実行できますが、c.copy_id=C.copy_id は ACCESS では実行できません3. 内部結合ステートメント 2StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a 内部結合 SysCopysUser b on a.curcopy_flag=1 および a.copy_id=b.copy_id ここでb.user_id=' '''' TmpPubUserID '''';This isStrSql:='SysCopys から copy_year,copy_name,a.copy_id を選択します a の内部結合 SysCopysUser b .copy_id=b.copy_id where a.curcopy_flag=''1'' and b.user_id=' '''' TmpPubUserID '''';注: どちらの書き込み方法も SQL で実行できます。 SERVER ですが、最初のステートメントは ACCESS4 では実行できません。内部結合ステートメント 3次のステートメントは SQL サーバーで実行できます'個別の sysoption.opti_id を選択してください。 sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort sysoption 内部結合 sysroleoption ON sysoption.opti_id=sysroleoption.opti_id AND sysroleoption.role_id=:roleid' ただし、ACCESS ではなく、 のみ'個別の sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort から sysoption 内部結合 sysroleoption ON sysoption.opti_id=sysroleoption.opti_id Where sysroleoption.role_id=:roleid'
# #5. ステートメントを更新します
SQL Server では実行できますが、Access では実行できません
'Update sysuserrole SET sysuserrole.role_sort = (Select sysrole.role_sort FROM sysrole Where sysuserrole.role_id = sysrole.role_id および sysuserrole.user_id=' 01')'
6. 日付比較
SQL SERVERで使用
StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date, End_date '
'SysCopys から '
'where copy_id=''' LoginCopyID ''' '
'および start_date
'and end_date>='' datetostr(LoginDate) '''';
ACCESS で使用
StrSql:='select copy_year,Start_month,Cur_month ,Start_Flag,Start_date, End_date '
'SysCopys から '
'where copy_id=''' LoginCopyID ''' '
'and start_date
'and end_date>=#' datetostr(LoginDate) '#'
上記10番目の関数「GetDateStr」を参照
7. 最大値取得文
StrSql:='insert into sysRoleOption '
'select ''' fidRoleId ''' as role_ID,opti_id,'
'convert(numeric,opti_id)-(convert(numeric,opti_parentid)*100) ' MaxOptiSort
' as opti_Sort from sysoption where opti_parentid= ' ''
PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID
''' および opti_bottom=''1' '''';
Change for
StrSql:='sysRoleOption に挿入 '
'Role_ID,opti_id,'
として ''' fidRoleId ''' を選択 'opti_id-opti_parentid*100 ' MaxOptiSort
' sysoption の opti_sort として、opti_parentid='''
PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID
''' および opti_bottom='' 1 ' ''''
注: どちらの書き込みメソッドも SQL-SERVER で実行できますが、最初の書き込みメソッドは ACCESS
ただし、Null 値とステートメントが表示されることを考慮してください。汎用性を高めるために、上記の 07 番目の関数「GetNullStr」と 09 番目の関数「GetConvertStr」を使用して、文字列から数値、NULL 値、および 0 の数値への変換を完了できます。GetNextNumStr コードを参照してください。
1. SQL では As は省略できません
2. 一度に実行できる SQL は 1 つだけです
3. 部分文字列、キャスト、その他の関数はありません
4. を厳密に区別しますSQL の整数型と文字型
5. ストアド プロシージャやトリガーはありません
6.! = は に置き換えられます
7. 時刻文字列の両側に # 記号を追加します
8. パラメータを含む SQL ステートメントでは、@ を ? 記号に置き換えます
関連する推奨事項: アクセス データベース チュートリアル
以上がAccessとSQL Serverの構文比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。