Dieser Artikel fasst kurz die Syntaxunterschiede zwischen Access und SQL Server zusammen. Ich hoffe, dass er für alle hilfreich ist.
1. Differenzierte Funktionen und Lösungen
Die Funktionen in der unten gezeigten Lösung sind in der Methode der TAdoConn-Klasse in der Unit untDataBase definiert.
2. Teilweise identische Datenbankfunktionen und Schlüsselwortlisten zwischen Access und SQLSERVER
1. Funktionen
2. Der Unterschied in der Anweisungssyntax zwischen Access und SQLServer
1 , Einfügen in…..Select…From-Anweisung:
Die folgende Anweisung in ACCESS Einfügen INTOPubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) (S elect. 20 0201 , 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')center "(select 200201******.co_Type='03')" Die Klammern („(“, „)“) in müssen vor der Ausführung wie folgt entfernt werden: Insert INTOPubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index) Auswählen 200201 ,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index FROM PubSubJectAcc Wobei PubSubJectAcc.co_type='03'Alle in SQL SERVER verfügbar2. Inner Join-Anweisung 1StrS ql := ' Wählen Sie a.user_id,a.user_opcode,b.copy_name aus sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=c.copy_id) auf a.user_id=c.user_id wherea.user_opcode=' ' ' +EdtUserOpCode.text+''' Und copy_name='''+Tmpcopyname +''''; sollte geändert werden inStrSql:='select a.user_id,a.user_opcode,b.copy_name from sysuser a innerer Join (syscopysuser c innerer Join syscopys b auf c.copy_id=d.copy_id) auf a.user_id=c.user_id, wobei a.user_opcode=''' +EdtUserOpCode.text+''' und copy_name='''+ Tmpcopyname + '''';Die Suchbedingung dieser Codezeile ist falsch: C.copy_id=C.Copy_id sollte in c.copy_id=d.copy_id geändert werdenHinweis: Beide Schreibmethoden können in SQL ausgeführt werden -SERVER, aber c.copy_id=C.copy_id kann nicht in ACCESS3 ausgeführt werden. Inner Join-Anweisung 2StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner joint SysCopysUser b on a.curcopy_flag=1 und a. copy_id=b.copy_id wobei b.user_id=' + '''' +TmpPubUserID+ '''';sein sollteStrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner joint SysCopysUser b auf a .copy_id=b.copy_id where a.curcopy_flag=''1'' and b.user_id=' + '''' +TmpPubUserID+ '''';Hinweis: Beide Schreibmethoden können in SQL ausgeführt werden. SERVER, aber die erste kann nicht in ACCESS ausgeführt werden sysoption inner join sysroleoption ON sysoption.opti_id=sysroleoption.opti_id AND sysroleoption.role_id=:roleid'Aber nicht in ACCESS, nur 'Wählen Sie eindeutige sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort aus dem Sysop tion inner join sysroleoption ON sysoption.opti_id=sysroleoption.opti_id Where sysroleoption.role_id=:roleid'5, Update-Anweisung kann in Sql SerVer, aber nicht in Access ausgeführt werden'Update sysuserrole SET sysuserrole.role_sort = (Wählen Sie sysrole aus. role_sort FROM sysrole Wo sysuserrole.role_id = sysrole.role_id und sysuserrole.user_id='01')'6. DatumsvergleichVerwendet in SQL SERVERStrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date, End_date ' +'From SysCopys '+'where copy_id='''+LoginCopyID+''' '+'and start_date+' und end_date> ;='''+datetostr(LoginDate)+'''';Used in ACCESSStrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date '+'From SysCopys '+ 'where copy_id='''+LoginCopyID+''' '+'and start_date+'and end_date>=#'+datetostr(LoginDate)+ '# '
Siehe die 10. Funktion „GetDateStr“ oben
7. Maximalwerterfassungsanweisung
StrSql:='insert into sysRoleOption '
+'select '''+fidRoleId+''' as Role_ID,opti_id,'
+ 'convert(numeric,opti_id)-(convert(numeric,opti_parentid)*100)+'+ MaxOptiSort
+' als opti_Sort von sysoption where opti_parentid='''
+PCoTypeID(self.trvRoles.Selected.data) ^ .StrCoTypeID
+''' und opti_bottom=''1'+'''';
geändert in
StrSql:='insert into sysRoleOption '
+'select '''+fidRoleId+''' as Role_ID ,opti_id,'
+'opti_id-opti_parentid*100+'+ MaxOptiSort
+' als opti_sort von sysoption where opti_parentid='''
+PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID
+ ''' und opti_bottom=''1'+''''
Hinweis: Beide Schreibmethoden können in SQL-SERVER ausgeführt werden, die erste kann jedoch nicht in ACCESS ausgeführt werden
Bedenken Sie jedoch, dass Nullwerte angezeigt werden Und für die Vielseitigkeit der Anweisung können Sie die 07. Funktion „GetNullStr“ und die 09. Funktion „GetConvertStr“ oben verwenden, um die Konvertierung von Zeichenfolgen in Zahlen, Nullwerte und 0-Zahlen abzuschließen: Weitere Informationen finden Sie im GetNextNumStr-Code.
1. Da kann in SQL nicht weggelassen werden
3 Es gibt keine Unterzeichenfolge, keine Umwandlung und keine anderen Funktionen
5 sind keine gespeicherten Prozeduren oder Trigger
6 ! = Ersetzen Sie durch
7. Fügen Sie in der SQL-Anweisung mit Parametern @ durch ?-Zeichen hinzu
Das obige ist der detaillierte Inhalt vonSyntaxvergleich zwischen Access und SQL Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!