So sánh Access SQL với SQL Server TSQL

So sánh Access SQL với SQL Server TSQL

Nếu bạn di chuyển dữ liệu Access của mình sang SQL Server hoặc tạo một giải pháp Access bằng SQL Server dưới dạng cơ sở dữ liệu đầu cuối, điều quan trọng là bạn biết những điều khác biệt giữa Access SQL và SQL Server Transact SQL (TSQL). Dưới đây là các biến thể quan trọng bạn cần biết để giải pháp của bạn hoạt động như mong muốn.

Để biết thêm thông tin, hãy xem bài Access SQL: khái niệm cơ bản, từ vựng và cú pháp cũng như Tham chiếu Transact-SQL.

Những khác biệt về cú pháp và biểu thức

Có một số điểm khác biệt về cú pháp và biểu thức yêu cầu chuyển đổi. Bảng dưới đây liệt kê các tùy chọn phổ biến nhất.

Khác biệt

Access SQL

SQL Server TSQL

Thuộc tính cơ sở dữ liệu có quan hệ

Thông thường được gọi là trường

Thông thường được gọi là cột

Ký tự chuỗi

Dấu ngoặc kép ("), chẳng hạn như "Mary Q. Contrary"

Dấu nháy đơn ('), chẳng hạn như 'Mary Q. Contrary'

Ký tự ngày

Dấu thăng (#), chẳng hạn như #01/01/2019#

Dấu nháy đơn ('), chẳng hạn như '01/01/2019'

Nhiều ký tự đại diện

Dấu sao (*), chẳng hạn như "Cath*"

Dấu tỷ lệ phần trăm (%), chẳng hạn như 'Cath%'

Một ký tự đại diện

Dấu chấm hỏi (?), chẳng hạn như "Cath?"

Dấu gạch dưới (_), chẳng hạn như "Cath_"

Toán tử mô-đun

Toán tử MOD, như Value1 MOD Value2

Tỷ lệ phần trăm (%), như Value1 % Value2

Các giá trị boolean

KHI Bitvalue = [True | False]

Hoặc

KHI Bitvalue = [-1 | 0]

KHI Bitvalue = [1 | 0]

Tham số

[<Tên A không phải là một cột được xác định>]

Hoặc

Trong SQL View, hãy sử dụng Khai báo SQL Parameters

@ParamName

Ghi chú   

  • Access sử dụng ký tự dấu ngoặc kép (") quanh tên bảng và đối tượng. T-SQL có thể sử dụng các tên bảng có chứa khoảng trắng nhưng đây không phải là cách đặt tên tiêu chuẩn. Trong hầu hết các trường hợp, tên đối tượng nên được đổi để không chứa khoảng trắng nhưng các truy vấn cũng phải được viết lại để phản ánh các tên bảng mới. Sử dụng dấu ngoặc vuông [ ] đối với các bảng không thể đổi tên nhưng không phù hợp với tiêu chuẩn đặt tên. Access cũng bổ sung thêm dấu ngoặc đơn xung quanh tham số trong truy vấn nhưng có thể loại bỏ dấu ngoặc đơn ctrong T-SQL.

  • Cân nhắc sử dụng định dạng ngày chính tắc, yyyy-mm-dd hh:nn:ss, là một tiêu chuẩn ODBC cho ngày tháng được lưu trữ dưới dạng ký tự để cung cấp một cách nhất quán để thể hiện thời gian trên nhiều cơ sở dữ liệu và giữ nguyên thứ tự sắp xếp ngày.

  • Để tránh nhầm lẫn khi so sánh các giá trị Boolean, bạn có thể sử dụng so sánh sau đây cho Access và SQL Server:

    • Kiểm tra giá trị False    KHI Bitvalue = 0

    • Kiểm tra giá trị True    KHI Bitvalue <> 0

Giá trị null

Một giá trị null không phải là trường trống vì trường trống có nghĩa là "không có giá trị nào cả". Giá trị null là chỗ dành sẵn vì chỗ dành sẵn có nghĩa là dữ liệu thiếu hoặc không xác định. Các hệ thống cơ sở dữ liệu sẽ nhận ra các giá trị null sẽ triển khai "lô-gic ba giá trị": True, False hoặc Unknown. Nếu bạn không xử lý các giá trị null chính xác, bạn có thể nhận được những kết quả không chính xác khi thực hiện so sánh bình đẳng hoặc đánh giá các mệnh đề WHERE. Đây là một so sánh cách xử lý các giá trị null của Access và SQL Server.

Tắt các giá trị null trong bảng

trong Access và SQL Server, trải nghiệm mặc định là bật các giá trị null. Để tắt các giá trị null trong cột bảng, hãy thực hiện các thao tác sau:

  • Trong Access, hãy đặt thuộc tính Bắt buộc của trường thành Yes.

  • Trong SQL Server, hãy thêm thuộc tính NOT NULL vào cột trong một câu lệnh TẠO BẢNG.

Thử nghiệm các giá trị null trong một mệnh đề WHERE

Sử dụng vị từ so sánh IS NULL và IS NOT NULL:

  • Trong Access, sử dụng IS NULL hoặc IS NOT NULL. Ví dụ:

    SELECT … WHERE column IS NULL.
  • Trong SQL Server, sử dụng IS NULL hoặc IS NOT NULL. Ví dụ:

    SELECT … WHERE field IS NULL

Chuyển đổi các giá trị null bằng hàm

Sử dụng các hàm null để bảo vệ biểu thức và trả về các giá trị thay thế:

  • Trong Access, hãy sử dụng hàm NZ (value, [valueifnull]) để trả về 0 hoặc một giá trị khác. Ví dụ:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • Trong SQL Server, hãy sử dụng hàm ISNULL(Value, replacement_value) để trả về 0 hoặc một giá trị khác. Ví dụ:

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

Hiểu các tùy chọn cơ sở dữ liệu

Một số hệ thống cơ sở dữ liệu có cơ chế sở hữu:

  • Trong Access, bạn không có tùy chọn cơ sở dữ liệu nào liên quan đến Null.

  • Trong Máy chủ SQL, bạn có thể sử dụng tùy chọn SET ANSI_NULLS OFF để so sánh bình đẳng trực tiếp với NULL bằng cách dùng các toán tử = và <>. Bạn nên tránh việc dùng tùy chọn này vì tùy chọn này đã lỗi thời và có thể gây nhầm lẫn cho những người dựa vào việc xử lý null theo chuẩn ISO.

Chuyển đổi và truyền

Bất cứ khi nào bạn đang làm việc với dữ liệu hoặc lập trình, chắc chắn sẽ có nhu cầu chuyển đổi từ một kiểu dữ liệu này sang kiểu khác. Quá trình chuyển đổi có thể đơn giản hoặc phức tạp. Các sự cố phổ biến mà bạn cần cân nhắc là: việc chuyển đổi tiềm ẩn hoặc rõ ràng, các thiết đặt khu vực ngày và giờ hiện tại, làm tròn hoặc cắt bớt số và kích cỡ kiểu dữ liệu. Không có cách nào khác để kiểm tra kỹ lưỡng và xác nhận kết quả của bạn.

Trong Access, bạn sử dụng Các hàm chuyển đổi kiểu, trong đó có mười một hàm, các hàm đều bắt đầu bằng chữ cái C, mỗi hàm cho một kiểu dữ liệu. Ví dụ: Để chuyển đổi số chứa dấu chấm động vào một chuỗi:

CStr(437.324) returns the string "437.324".

Trong SQL Server, bạn sẽ sử dụng chủ yếu là các hàm TSQL CAST and CONVERT (TRUYỀN và CHUYỂN ĐỔI) mặc dù có những Hàm Chuyển đổi đáp ứng được những nhu cầu đặc biệt. Ví dụ: Để chuyển đổi số chứa dấu chấm động vào một chuỗi:

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

Hàm DateAdd, DateDiff và DatePart

Những hàm ngày tháng được sử dụng thường xuyên này đều giống nhau (DateAdd, DateDiff và DatePart) trong Access và TSQL nhưng việc sử dụng tham đối đầu tiên có sự khác biệt.

  • Trong Access, tham đối thứ nhất được gọi là interval và đó là một biểu thức chuỗi yêu cầu có dấu ngoặc kép.

  • Trong SQL Server, tham đối đầu tiên được gọi là datepart và sử dụng các giá trị từ khóa mà không yêu cầu có dấu ngoặc kép.

    Cấu phần

    Access

    SQL Server

    Năm

    "yyyy"

    year, yy, yyyy

    Quý

    "q"

    quarter, qq, q

    Tháng

    "m"

    month, mm, m

    Ngày trong năm

    "y"

    dayofyear, dy, y

    Ngày

    "d"

    day, dd, d

    Tuần

    "ww"

    wk, ww

    Ngày trong tuần

    "w"

    weekday, dw

    Giờ

    "h"

    hour, hh

    Phút

    "n"

    minute, mi, n

    Giây

    "s"

    second, ss, s

    Millisecond

    millisecond, ms

So sánh các hàm

Truy vấn Access có thể chứa các cột tính toán để đôi khi sử dụng cácHàm Access để thu được kết quả. Khi bạn di chuyển các truy vấn sang SQL Server, bạn cần thay thế hàm Access bằng một hàm TSQL tương đương (nếu có). Nếu không có hàm TSQL tương ứng thì bạn thường có thể tạo cột tính toán (Thuật ngữ TSQL dùng cho cột tính toán) để thực hiện những thao tác bạn muốn. TSQL có nhiều hàm cho bạn thoải mái lựa chọn. Để biết thêm thông tin, hãy xem mục Các hàm của cơ sở dữ liệu SQL là gì?.

Bảng sau đây hiển thị hàm nào của Access có hàm TSQL tương ứng.

Danh mục Access

Hàm Access

Hàm TSQL

Chuyển đổi

Hàm Chr

CHAR

Chuyển đổi

Hàm Day

DAY

Chuyển đổi

Hàm FormatNumber

FORMAT

Chuyển đổi

Hàm FormatPercent

FORMAT

Chuyển đổi

Hàm Str

STR

Chuyển đổi

Các hàm chuyển đổi kiểu

CAST and CONVERT

Ngày/Giờ

Hàm Date

CURRENT_TIMESTAMP

Ngày/Giờ

Hàm Day

DATEFROMPARTS

Ngày/Giờ

Hàm DateAdd

DATEADD

Ngày/Giờ

Hàm DateDiff

DATEDIFF

DATEDIFF_BIG

Ngày/Giờ

Hàm DatePart

DATEPART

Ngày/Giờ

Hàm DateSerial

DATEFROMPARTS

Ngày/Giờ

Hàm DateValue

DATENAME

Ngày/Giờ

Hàm Hour

TIMEFROMPARTS

Ngày/Giờ

Hàm Minute

TIMEFROMPARTS

Ngày/Giờ

Hàm Month

MONTH

Ngày/Giờ

Hàm Now

SYSDATETIME

Ngày/Giờ

Hàm Second

TIMEFROMPARTS

Hàm Time

TIMEFROMPARTS

Ngày/Giờ

Hàm TimeSerial

TIMEFROMPARTS

Ngày/Giờ

Hàm Weekday

DATEPART

DATENAME

Ngày/Giờ

Hàm Year

YEAR

DATEFROMPARTS

Tổng hợp miền

Các hàm DFirst, DLast

FIRST_VALUE

LAST_VALUE

Toán học

Hàm Abs

ABS

Toán học

Hàm Atn

ATAN

ATN2

Toán học

Hàm Cos

COS

ACOS

Toán học

Hàm Exp

EXP

Toán học

Các hàm Int, Fix

FLOOR

Toán học

Hàm Log

LOG

LOG10

Toán học

Hàm Rnd

RAND

Toán học

Hàm Round

ROUND

Toán học

Hàm Sgn

SIGN

Toán học

Hàm Sin

SIN

Toán học

Hàm Sqr

SQRT

Dòng chương trình

Hàm Choose

CHOOSE

Dòng chương trình

Hàm IIf

IIF

Thống kê

Hàm Avg

AVG

SQL Aggregate

Hàm Count

COUNT

COUNT_BIG

SQL Aggregate

Các hàm Min, Max

MIN

MAX

SQL Aggregate

Các hàm StDev, StDevP

STDEV

STDEVP

SQL Aggregate

Hàm Sum

SUM

SQL Aggregate

Các hàm Var, VarP

VAR

VARP

Văn bản

Hàm Format

FORMAT

Văn bản

Hàm LCase

LOWER

Văn bản

Hàm Left

LEFT

Văn bản

Hàm Len

LEN

Văn bản

Các hàm LTrim, RTrim và Trim

TRIM

LTRIM

RTRIM

Văn bản

Hàm Replace

REPLACE

Văn bản

Hàm Right

RIGHT

Văn bản

Hàm StrReverse

REVERSE

Văn bản

Hàm UCase

UPPER

Phát triển kỹ năng Office của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Người dùng nội bộ Office

Thông tin này có hữu ích không?

Cảm ơn phản hồi của bạn!

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×