เปรียบเทียบ Access SQL กับ SQL Server TSQL
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

หากคุณย้ายข้อมูล Access ไปยัง SQL Server หรือคุณสร้างโซลูชัน Access ด้วย SQL Server เป็นฐานข้อมูลส่วนหลัง คุณต้องทราบความแตกต่างระหว่าง Access SQL และ SQL Server Transact SQL (TSQL) ต่อไปนี้เป็นชุดรูปแบบสำคัญที่คุณต้องทราบเพื่อให้โซลูชันของคุณได้ผลตามที่ต้องการ

สำหรับข้อมูลเพิ่มเติม ให้ดู Access SQL: แนวคิดพื้นฐาน คำศัพท์ และไวยากรณ์ และ Transact-SQL Reference

ความแตกต่างระหว่างไวยากรณ์และนิพจน์

ไวยากรณ์และนิพจน์มีความแตกต่างบางประการที่ต้องมีการแปลง ตารางต่อไปนี้สรุปความแตกต่างที่พบบ่อยที่สุด

ความแตกต่าง

Access SQL:

SQL Server TSQL

แอตทริบิวต์ฐานข้อมูลเชิงสัมพันธ์

โดยปกติเรียกว่าเขตข้อมูล

โดยปกติเรียกว่าคอลัมน์

สัญพจน์สตริง

เครื่องหมายคำพูด (") เช่น "Mary Q. Contrary"

อัญประกาศเดี่ยว (') เช่น 'Mary Q. Contrary'

สัญพจน์วันที่

เครื่องหมายสี่เหลี่ยม (#) เช่น #1/1/2019#

อัญประกาศเดี่ยว (') เช่น '1/1/2019'

หลายอักขระตัวแทน

เครื่องหมายดอกจัน (*) เช่น "Cath*"

เปอร์เซ็นต์ (%) เช่น 'Cath%'

อักขระตัวแทนเดี่ยว

เครื่องหมายคำถาม (?) เช่น "Cath?"

ขีดล่าง (_) เช่น "Cath_"

ตัวดำเนินการมอดุโล

ตัวดำเนินการ MOD เช่น Value1 MOD Value2

เปอร์เซ็นต์ (%) เช่น Value1 % Value2

ค่าบูลีน

WHERE Bitvalue = [จริง | เท็จ]

หรือ

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

พารามิเตอร์

[<ชื่อที่ไม่ใช่คอลัมน์ที่กำหนด>]

หรือ

ในมุมมอง SQL ใช้การประกาศพารามิเตอร์ SQL

@ParamName

หมายเหตุ   

  • Access ใช้อักขระเครื่องหมายคำพูด (") รอบชื่อตารางและวัตถุ T-SQL สามารถใช้ชื่อตารางที่มีช่องว่างได้ แต่นี่ไม่ใช่วิธีการตั้งชื่อมาตรฐาน ในกรณีส่วนใหญ่ ชื่อวัตถุควรเปลี่ยนใหม่ไม่ให้มีช่องว่าง แต่คิวรีก็ต้องเขียนใหม่เพื่อให้สะท้อนตามชื่อตารางใหม่เช่นกัน ใช้วงเล็บเหลี่ยม [] สำหรับตารางที่ไม่สามารถเปลี่ยนชื่อได้แต่ไม่เป็นไปตามมาตรฐานการตั้งชื่อ นอกจากนี้ X ยังเพิ่มวงเล็บพิเศษรอบพารามิเตอร์ในคิวรีอีกด้วย แต่สามารถนำออกได้ใน T-SQL

  • พิจารณาใช้รูปแบบวันที่มาตรฐาน yyyy-mm-dd hh:nn:ss ซึ่งเป็นมาตรฐาน ODBC สำหรับวันที่ที่จัดเก็บเป็นอักขระที่แสดงถึงวันที่ในฐานข้อมูลต่างๆ อย่างสอดคล้องกันและรักษาลำดับการเรียงวันที่

  • เพื่อไม่ให้สับสนเมื่อเปรียบเทียบค่าบูลีน คุณสามารถใช้การเปรียบเทียบต่อไปนี้สำหรับ Access และ SQL Server:

    • ทดสอบหาค่าเท็จ    WHERE Bitvalue = 0

    • ทดสอบหาค่าจริง    WHERE Bitvalue <> 0

ค่า Null

ค่า Null ไม่ใช่เขตข้อมูลว่างเปล่าที่หมายถึง“ ไม่มีค่าเลย” ค่า Null เป็นตัวยึดที่หมายความว่าข้อมูลนั้นหายไปหรือไม่รู้จัก ระบบฐานข้อมูลที่รับรู้ค่า Null จะใช้ "ตรรกะสามค่า" ซึ่งหมายความว่าบางค่าอาจเป็นจริง เท็จ หรือไม่รู้จัก หากคุณจัดการกับค่า Null ไม่ถูกต้อง คุณอาจได้ผลลัพธ์ผิดเมื่อเปรียบเทียบความเท่ากันหรือเมื่อประเมินส่วนคำสั่ง WHERE นี่คือการเปรียบเทียบวิธีที่ Access และ SQL Server จัดการกับค่า Null

ปิดใช้งานค่า Null ในตาราง

ใน Access และ SQL Server ประสบการณ์เริ่มต้นคือค่า Null จะเปิดใช้งาน เมื่อต้องการปิดใช้งานค่า Null ในคอลัมน์ตาราง ให้ทำดังต่อไปนี้:

  • ใน Access ให้ตั้งค่าคุณสมบัติ จำเป็น ของเขตข้อมูลเป็นใช่

  • ใน SQL Server ให้เพิ่มแอตทริบิวต์ NOT NULL ลงในคอลัมน์ในคำสั่ง CREATE TABLE

ทดสอบค่า Null ในส่วนคำสั่ง WHERE

ใช้เพรดิเคตการเปรียบเทียบ IS NULL และ IS NOT NULL:

  • ใน Access ให้ใช้ IS NULL หรือ IS NOT NULL ตัวอย่าง:

    SELECT … WHERE column IS NULL.
  • ใน SQL Server ให้ใช้ IS NULL หรือ IS NOT NULL ตัวอย่าง:

    SELECT … WHERE field IS NULL

แปลงค่า Null ด้วยฟังก์ชัน

ใช้ฟังก์ชัน Null เพื่อป้องกันนิพจน์ของคุณและคืนค่าอื่นๆ:

  • ใน Access ให้ใช้ฟังก์ชัน NZ (value, [valueifnull]) ซึ่งส่งคืนค่า 0 หรือค่าอื่น ตัวอย่าง:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • ใน SQL Server ให้ใช้ฟังก์ชัน ISNULL(value, replacement_value) ซึ่งส่งคืนค่า 0 หรือค่าอื่น ตัวอย่าง:

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

เข้าใจตัวเลือกฐานข้อมูล

บางระบบฐานข้อมูลจะมีกลไกที่เป็นกรรมสิทธิ์:

  • ใน Access จะไม่มีตัวเลือกฐานข้อมูลที่เกี่ยวข้องกับ Null

  • ใน SQL Server คุณสามารถใช้ตัวเลือก SET ANSI_NULLS OFF สำหรับการเปรียบเทียบความเท่ากันโดยตรงกับ NULL โดยใช้ตัวดำเนินการ = และ <> เราขอแนะนำให้คุณหลีกเลี่ยงการใช้ตัวเลือกนี้เพราะไม่ได้รับการสนับสนุน และอาจทำให้ผู้อื่นสับสนที่ต้องพึ่งพาการจัดการแบบ Null ตามมาตรฐาน ISO

การแปลง

เมื่อใดก็ตามที่คุณทำงานกับข้อมูลหรือการเขียนโปรแกรม คุณจำเป็นต้องแปลงจากข้อมูลชนิดหนึ่งไปเป็นอีกชนิดหนึ่งอย่างต่อเนื่อง กระบวนการแปลงอาจง่ายดายหรือซับซ้อนก็ได้ ปัญหาทั่วไปที่คุณต้องพิจารณาคือ: การแปลงโดยปริยายหรือชัดแจ้ง การตั้งค่าภูมิภาควันที่และเวลาปัจจุบัน การปัดเศษหรือตัดทอนตัวเลข และขนาดชนิดข้อมูล ไม่มีอะไรที่จะมาทดแทนการทดสอบโดยละเอียดและการยืนยันผลลัพธ์ของคุณได้

ใน Accessให้คุณใช้ ฟังก์ชันการแปลงชนิด ซึ่งมีสิบเอ็ดตัว แต่ละตัวเริ่มต้นด้วยตัวอักษร C โดยหนึ่งตัวสำหรับแต่ละชนิดข้อมูล ตัวอย่างเช่น เมื่อต้องการแปลงหมายเลขจุดลอยตัวเป็นสตริง:

CStr(437.324) returns the string "437.324".

ใน SQL Server ให้คุณใช้ฟังก์ชัน TSQL CAST and CONVERT เป็นหลัก แม้ว่าจะมี ฟังก์ชันการแปลง อื่นๆ สำหรับความต้องการแบบพิเศษ ตัวอย่างเช่น เมื่อต้องการแปลงหมายเลขจุดลอยตัวเป็นสตริง:

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

ฟังก์ชัน DateAdd, DateDiff และ DatePart

ฟังก์ชันวันที่ที่ใช้กันทั่วไปเหล่านี้มีความคล้ายคลึงกัน (DateAdd, DateDiff และ DatePart) ใน Access และ TSQL แต่การใช้อาร์กิวเมนต์แรกนั้นแตกต่างกัน

  • ใน Access อาร์กิวเมนต์แรกเรียกว่า interval และเป็นนิพจน์สตริงที่ต้องมีเครื่องหมายคำพูด

  • ใน SQL Server อาร์กิวเมนต์แรกเรียกว่า datepart และจะใช้ค่าคำสำคัญที่ไม่ต้องมีเครื่องหมายคำพูด

    คอมโพเนนต์

    Access

    SQL Server

    ปี

    "yyyy"

    ปี, yy, yyyy

    ไตรมาส

    "q"

    ไตรมาส, qq, q

    เดือน

    "m"

    เดือน, mm, m

    วันของปี

    "y"

    วันของปี, dy, y

    วัน

    "d"

    วัน, dd, d

    สัปดาห์

    "ww"

    wk, ww

    วันของสัปดาห์

    "w"

    วันทำงาน, dw

    ชั่วโมง

    "h"

    ชั่วโมง, hh

    นาที

    "n"

    นาที, mi, n

    วินาที

    "s"

    วินาที, ss, s

    มิลลิวินาที

    มิลลิวินาที, ms

การเปรียบเทียบฟังก์ชัน

คิวรี Access สามารถมีคอลัมน์ที่คำนวณแล้วซึ่งบางครั้งใช้ ฟังก์ชัน Access เพื่อให้ได้ผลลัพธ์ เมื่อคุณโยกย้ายคิวรีไปยัง SQL Server คุณต้องแทนที่ฟังก์ชัน Access ด้วยฟังก์ชัน TSQL ที่เทียบเท่ากันหากมีอยู่ ถ้าไม่มีฟังก์ชัน TSQL ที่ตรงกัน โดยปกติคุณก็สามารถ สร้างคอลัมน์ที่คำนวณได้ (คำ TSQL ที่ใช้สำหรับคอลัมน์ที่คำนวณแล้ว) เพื่อทำสิ่งที่คุณต้องการ TSQL มีฟังก์ชันมากมายและเป็นประโยชน์ให้คุณได้ดูว่ามีอะไรบ้าง สำหรับข้อมูลเพิ่มเติมโปรดดู ฟังก์ชันฐานข้อมูล SQL คืออะไร

ตารางต่อไปนี้แสดงฟังก์ชัน Access ที่มีฟังก์ชัน TSQL ที่ตรงกัน

ประเภท Access

ฟังก์ชัน Access

ฟังก์ชัน TSQL

การแปลง

ฟังก์ชัน Chr

CHAR

การแปลง

ฟังก์ชัน Day

DAY

การแปลง

ฟังก์ชัน FormatNumber

FORMAT

การแปลง

ฟังก์ชัน FormatPercent

FORMAT

การแปลง

ฟังก์ชัน Str

STR

การแปลง

ฟังก์ชัน Type Conversion

CAST and CONVERT

วันที่/เวลา

ฟังก์ชัน Date

CURRENT_TIMESTAMP

วันที่/เวลา

ฟังก์ชัน Day

DATEFROMPARTS

วันที่/เวลา

ฟังก์ชัน DateAdd

DATEADD

วันที่/เวลา

ฟังก์ชัน DateDiff

DATEDIFF

DATEDIFF_BIG

วันที่/เวลา

ฟังก์ชัน DatePart

DATEPART

วันที่/เวลา

ฟังก์ชัน DateSerial

DATEFROMPARTS

วันที่/เวลา

ฟังก์ชัน DateValue

DATENAME

วันที่/เวลา

ฟังก์ชัน Hour

TIMEFROMPARTS

วันที่/เวลา

ฟังก์ชัน Minute

TIMEFROMPARTS

วันที่/เวลา

ฟังก์ชัน Month

MONTH

วันที่/เวลา

ฟังก์ชัน Now

SYSDATETIME

วันที่/เวลา

ฟังก์ชัน Second

TIMEFROMPARTS

ฟังก์ชัน Time

TIMEFROMPARTS

วันที่/เวลา

ฟังก์ชัน TimeSerial

TIMEFROMPARTS

วันที่/เวลา

ฟังก์ชัน Weekday

DATEPART

DATENAME

วันที่/เวลา

ฟังก์ชัน Year

YEAR

DATEFROMPARTS

การรวมโดเมน

ฟังก์ชัน DFirst, DLast

FIRST_VALUE

LAST_VALUE

คณิตศาสตร์

ฟังก์ชัน Abs

ABS

คณิตศาสตร์

ฟังก์ชัน Atn

ATAN

ATN2

คณิตศาสตร์

ฟังก์ชัน Cos

COS

ACOS

คณิตศาสตร์

ฟังก์ชัน Exp

EXP

คณิตศาสตร์

ฟังก์ชัน Int, Fix

FLOOR

คณิตศาสตร์

ฟังก์ชัน Log

LOG

LOG10

คณิตศาสตร์

ฟังก์ชัน Rnd

RAND

คณิตศาสตร์

ฟังก์ชัน Round

ROUND

คณิตศาสตร์

ฟังก์ชัน Sgn

SIGN

คณิตศาสตร์

ฟังก์ชัน Sin

SIN

คณิตศาสตร์

ฟังก์ชัน Sqr

SQRT

Program Flow

ฟังก์ชัน Choose

CHOOSE

Program Flow

ฟังก์ชัน IIf

IIF

ทางสถิติ

ฟังก์ชัน Avg

AVG

การรวม SQL

ฟังก์ชัน Count

COUNT

COUNT_BIG

การรวม SQL

ฟังก์ชัน Min, Max

MIN

MAX

การรวม SQL

ฟังก์ชัน StDev, StDevP

STDEV

STDEVP

การรวม SQL

ฟังก์ชัน Sum

SUM

การรวม SQL

ฟังก์ชัน Var, VarP

VAR

VARP

ข้อความ

ฟังก์ชัน Format

FORMAT

ข้อความ

ฟังก์ชัน LCase

LOWER

ข้อความ

ฟังก์ชัน Left

LEFT

ข้อความ

ฟังก์ชัน Len

LEN

ข้อความ

ฟังก์ชัน LTrim, RTrim และ Trim

TRIM

LTRIM

RTRIM

ข้อความ

ฟังก์ชัน Replace

REPLACE

ข้อความ

ฟังก์ชัน Right

RIGHT

ข้อความ

ฟังก์ชัน StrReverse

REVERSE

ข้อความ

ฟังก์ชัน UCase

UPPER

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย