Membandingkan Access SQL dengan TSQL SQL Server
Applies ToAccess untuk Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Jika akan memigrasikan data Access ke SQL Server atau membuat solusi Access dengan SQL Server sebagai database ujung belakang, Anda perlu mengetahui perbedaan antara Access SQL dan SQL Server Transact SQL (TSQL). Berikut adalah beberapa variasi penting yang perlu diketahui agar solusi Anda dapat berfungsi sebagaimana mestinya.

Untuk informasi selengkapnya, lihat Access SQL: konsep dasar, kosakata, dan sintaks serta Referensi Transact-SQL.

Perbedaan sintaksis dan ekspresi

Ada beberapa perbedaan sintaksis dan ekspresi yang memerlukan pengubahan. Tabel berikut ini merangkum perbedaan yang paling umum.

Perbedaan

Access SQL

SQL Server TSQL

Atribut database relasional

Biasanya disebut bidang

Biasanya disebut kolom

Terbaca sebagai string

Tanda petik ("), seperti "Mary Q. Contrary"

Tanda petik tunggal (‘), seperti ‘Mary Q. Contrary’

Terbaca sebagai tanggal

Tanda pagar (#), seperti #1/1/2019#

Tanda petik tunggal ('), seperti '1/1/2019'

Beberapa karakter wildcard

Tanda bintang (*), seperti "Cath*"

Persen (%), seperti 'Cath%'

Satu karakter wildcard

Tanda Tanya (?), seperti "Cath?"

Garis bawah (_), seperti "Cath_"

Operator modulo

Operator MOD, seperti Nilai1 MOD Nilai2

Persen (%), seperti Nilai1 % Nilai2

Nilai Boolean

WHERE Bitvalue = [True | False]

Atau

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

Parameter

[<Nama yang bukan merupakan kolom yang ditentukan>]

Atau

Dalam tampilan SQL, gunakan Deklarasi Parameter SQL

@NamaParam

Catatan   

  • Access menggunakan karakter tanda petik (") di sekitar objek dan nama tabel. T-SQL dapat menggunakannya untuk nama tabel dengan spasi, tetapi hal ini bukanlah praktik penamaan standar. Biasanya, nama objek harus diubah tanpa spasi, tetapi kueri juga harus ditulis ulang untuk menunjukkan nama tabel baru. Gunakan kurung siku [ ] untuk tabel yang tidak dapat diganti namanya tetapi tidak sesuai dengan standar penamaan. Access juga menambahkan tanda kurung tambahan di sekitar parameter dalam kueri, tetapi tanda ini dapat dihapus di T-SQL.

  • Pertimbangkan untuk menggunakan format tanggal kanonis, tttt-bb-hh jj:mm:dd, yang merupakan standar ODBC untuk tanggal yang disimpan sebagai karakter, yang menyediakan cara konsisten untuk menampilkannya di seluruh database dan mempertahankan urutan tanggal.

  • Agar tidak bingung ketika membandingkan nilai Boolean, Anda dapat menggunakan perbandingan berikut ini untuk Access dan SQL Server:

    • Percobaan untuk nilai salah    WHERE Bitvalue = 0

    • Percobaan untuk nilai benar    WHERE Bitvalue <> 0

Nilai null

Nilai null bukanlah bidang kosong yang berarti “tidak ada nilai sama sekali”. Nilai null adalah tempat penampung yang berarti data tidak ditemukan atau tidak diketahui. Sistem database yang mengenali nilai null menerapkan “logika tiga nilai”, yang berarti sesuatu dapat bernilai benar, salah, atau tidak diketahui. Jika tidak menangani nilai null dengan benar, Anda mungkin mendapatkan hasil yang salah ketika membuat perbandingan persamaan atau mengevaluasi klausa WHERE. Berikut adalah perbandingan tentang bagaimana Access dan SQL Server menangani nilai null.

Menonaktifkan nilai null dalam tabel

Di Access dan SQL Server, nilai null diaktifkan secara default. Untuk menonaktifkan nilai null dalam kolom tabel, lakukan hal berikut:

  • Di Access, atur properti Diperlukan pada bidang ke Ya.

  • Di SQL Server, tambahkan atribut NOT NULL ke kolom dalam pernyataan CREATE TABLE.

Percobaan untuk nilai null dalam klausa WHERE

Gunakan predikat perbandingan NULL dan IS NOT NULL:

  • Di Access, gunakan IS NULL atau IS NOT NULL. Misalnya:

    SELECT … WHERE column IS NULL.
  • Di SQL Server, gunakan IS NULL atau IS NOT NULL. Misalnya:

    SELECT … WHERE field IS NULL

Mengonversi nilai null dengan fungsi

Gunakan fungsi null untuk melindungi ekspresi dan mengembalikan nilai alternatif:

  • Di Access, gunakan fungsi NZ (nilai, [nilaijikanull]) yang akan mengembalikan 0 atau nilai lainnya. Misalnya:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • Di SQL Server, gunakan fungsi ISNULL (Nilai, nilai_pengganti) yang akan mengembalikan 0 atau nilai lainnya. Misalnya:

    SELECT AVG (ISNULL (Weight, 50)) FROM Product

Memahami opsi Database

Beberapa sistem database memiliki mekanisme kepemilikan:

  • Di Access, tidak ada opsi database yang terkait dengan Null.

  • Di SQL Server, Anda dapat menggunakan opsi SET ANSI_NULLS OFF untuk perbandingan persamaan langsung dengan NULL menggunakan operator = dan <>. Sebaiknya hindari penggunaan opsi ini karena sudah dihentikan dan dapat membingungkan orang lain yang mengandalkan penanganan null yang mematuhi standar ISO.

Konversi dan pengubahan

Setiap kali bekerja dengan data atau melakukan pemrograman, Anda selalu perlu mengonversi data dari satu tipe ke yang lainnya. Proses konversi dapat menjadi mudah atau rumit. Masalah umum yang perlu Anda pikirkan adalah: konversi implisit atau eksplisit, pengaturan kawasan untuk tanggal dan waktu saat ini, pembulatan atau pemotongan angka, dan ukuran tipe data. Tidak ada pengganti untuk pengujian menyeluruh dan konfirmasi hasil.

Di Access, Anda menggunakan Fungsi Konversi Tipe, yang berjumlah sebelas, masing-masing dimulai dengan huruf C, satu fungsi untuk setiap tipe data. Misalnya, untuk mengonversi bilangan poin mengambang menjadi string:

CStr(437.324) returns the string "437.324".

Di SQL Server, Anda biasanya menggunakan fungsi TSQL CAST dan CONVERT, meskipun ada Fungsi Konversi lainnya untuk kebutuhan tertentu. Misalnya, untuk mengonversi bilangan poin mengambang menjadi string:

CONVERT(TEXT, 437.324) returns the string "437.324"

Fungsi DateAdd, DateDiff, dan DatePart

Fungsi tanggal yang sering digunakan ini hampir sama (DateAdd, DateDiff, dan DatePart) di Access maupun di TSQL, tetapi penggunaan argumen pertamanya berbeda.

  • Di Access, argumen pertama disebut interval, dan merupakan ekspresi string yang memerlukan tanda petik.

  • Di SQL Server, argumen pertama disebut datepart dan menggunakan nilai kata kunci yang tidak memerlukan tanda petik.

    Komponen

    Access

    SQL Server

    Tahun

    "yyyy"

    year, yy, yyyy

    Kuartal

    "q"

    quarter, qq, q

    Bulan

    "m"

    month, mm, m

    Hari dalam Tahun

    "y"

    dayofyear, dy, y

    Hari

    "d"

    day, dd, d

    Minggu

    "ww"

    wk, ww

    Hari dalam Minggu

    "w"

    weekday, dw

    Jam

    "h"

    hour, hh

    Menit

    "n"

    minute, mi, n

    Detik

    "s"

    second, ss, s

    Milidetik

    millisecond, ms

Perbandingan fungsi

Kueri Access dapat berisi kolom terhitung yang terkadang menggunakan Fungsi Access untuk mendapatkan hasil. Saat memigrasikan kueri ke SQL Server, Anda perlu mengganti fungsi Access dengan fungsi TSQL yang setara jika tersedia. Jika tidak ada fungsi TSQL yang terkait, Anda biasanya dapat membuat kolom terkomputasi (Istilah TSQL yang digunakan untuk kolom terhitung) untuk melakukan yang Anda inginkan. TSQL memiliki berbagai macam fungsi, dan Anda sebaiknya mengetahui fungsi-fungsi yang tersedia. Untuk informasi selengkapnya, lihat Apa saja fungsi database SQL?.

Tabel berikut ini memperlihatkan fungsi Access yang mempunyai fungsi TSQL terkait.

Kategori Access

Fungsi Access

Fungsi TSQL

Konversi

Fungsi Chr

CHAR

Konversi

Fungsi Day

DAY

Konversi

Fungsi FormatNumber

FORMAT

Konversi

Fungsi FormatPercent

FORMAT

Konversi

Fungsi Str

STR

Konversi

Fungsi Konversi Tipe

CAST dan CONVERT

Tanggal/Waktu

Fungsi Date

CURRENT_TIMESTAMP

Tanggal/Waktu

Fungsi Day

DATEFROMPARTS

Tanggal/Waktu

Fungsi DateAdd

DATEADD

Tanggal/Waktu

Fungsi DateDiff

DATEDIFF

DATEDIFF_BIG

Tanggal/Waktu

Fungsi DatePart

DATEPART

Tanggal/Waktu

Fungsi DateSerial

DATEFROMPARTS

Tanggal/Waktu

Fungsi DateValue

DATENAME

Tanggal/Waktu

Fungsi Hour

TIMEFROMPARTS

Tanggal/Waktu

Fungsi Minute

TIMEFROMPARTS

Tanggal/Waktu

Fungsi Month

MONTH

Tanggal/Waktu

Fungsi Now

SYSDATETIME

Tanggal/Waktu

Fungsi Second

TIMEFROMPARTS

Fungsi Time

TIMEFROMPARTS

Tanggal/Waktu

Fungsi TimeSerial

TIMEFROMPARTS

Tanggal/Waktu

Fungsi Weekday

DATEPART

DATENAME

Tanggal/Waktu

Fungsi Year

YEAR

DATEFROMPARTS

Agregat Domain

Fungsi DFirst, DLast

FIRST_VALUE

LAST_VALUE

Matematika

Fungsi Abs

ABS

Matematika

Fungsi Atn

ATAN

ATN2

Matematika

Fungsi Cos

COS

ACOS

Matematika

Fungsi Exp

EXP

Matematika

Fungsi int, Fix

FLOOR

Matematika

Fungsi Log

LOG

LOG10

Matematika

Fungsi Rnd

RAND

Matematika

Fungsi Round

ROUND

Matematika

Fungsi Sgn

SIGN

Matematika

Fungsi Sin

SIN

Matematika

Fungsi Sqr

SQRT

Alur Program

Fungsi Choose

CHOOSE

Alur Program

Fungsi IIf

IIF

Statistik

Fungsi Avg

AVG

Agregat SQL

Fungsi Count

COUNT

COUNT_BIG

Agregat SQL

Fungsi Min, Max

MIN

MAX

Agregat SQL

Fungsi StDev, StDevP

STDEV

STDEVP

Agregat SQL

Fungsi Sum

SUM

Agregat SQL

Fungsi Var, VarP

VAR

VARP

Teks

Fungsi Format

FORMAT

Teks

Fungsi LCase

LOWER

Teks

Fungsi Left

LEFT

Teks

Fungsi Len

LEN

Teks

Fungsi LTrim, RTrim, dan Trim

TRIM

LTRIM

RTRIM

Teks

Fungsi Replace

REPLACE

Teks

Fungsi Right

RIGHT

Teks

Fungsi StrReverse

REVERSE

Teks

Fungsi UCase

UPPER

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.

Komunitas membantu Anda bertanya dan menjawab pertanyaan, memberikan umpan balik, dan mendengar dari para ahli yang memiliki pengetahuan yang luas.