![Syntaxvergleich zwischen Access und SQL Server](https://img.php.cn/upload/article/202102/20/2021022013353125185.jpg)
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.
![1613799418338657.png Syntaxvergleich zwischen Access und SQL Server](https://img.php.cn/upload/image/695/410/545/1613799418338657.png)
2. Teilweise identische Datenbankfunktionen und Schlüsselwortlisten zwischen Access und SQLSERVER
1. Funktionen
![1613799434643503.png Syntaxvergleich zwischen Access und SQL Server](https://img.php.cn/upload/image/111/869/984/1613799434643503.png)
2. Der Unterschied in der Anweisungssyntax zwischen Access und SQLServer
1 , Einfügen in…..Select…From-Anweisung: ![1613799450493345.png Syntaxvergleich zwischen Access und SQL Server](https://img.php.cn/upload/image/989/291/191/1613799450493345.png)
Die folgende Anweisung in ACCESS
Einfügen INTO
PubSubJectAccCopys(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 INTO
PubSubJectAccCopys(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ügbar
2. Inner Join-Anweisung 1
StrS 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 where
a.user_opcode=' ' ' +EdtUserOpCode.text+''' Und copy_name='''+Tmpcopyname +'''';
sollte geändert werden in
StrSql:='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 werden
Hinweis: Beide Schreibmethoden können in SQL ausgeführt werden -SERVER, aber c.copy_id=C.copy_id kann nicht in ACCESS
3 ausgeführt werden. Inner Join-Anweisung 2
StrSql:='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 sollte
StrSql:='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. Datumsvergleich
Verwendet in SQL SERVER
StrSql:='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 ACCESS
StrSql:='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!