השוואה בין Access SQL ל- SQL Server TSQL
Applies ToAccess של 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.

הבדלים בתחביר ובביטוי

ישנם כמה הבדלים בתחביר ובביטוי שמחייבים המרה. הטבלה הבאה מסכמת את ההבדלים הנפוצים ביותר.

הבדל

Access SQL

SQL Server TSQL

תכונת מסד נתונים יחסי

נקראת בדרך כלל "שדה"

נקראת בדרך כלל "עמודה"

ליטרל מחרוזת

מרכאות ("), כגון "הגר חזן"

גרש ('), כגון 'הגר חזן'

ליטרל תאריך

סולמית (#), כגון #01/01/2019#

גרש ('), כגון '01/01/2019'

תו עבור תווים כלליים מרובים

כוכבית (*), כגון "אבי*"

אחוז (%), כגון 'אבי%'

תו עבור תו כללי אחד

סימן שאלה (?), כגון "אבי?"

קו תחתון (_), כגון "אבי_"

אופרטור מודולו

אופרטור MOD, כגון Value1 MOD Value2

אחוז (%), כגון Value1 % Value2

ערכים בוליאניים

WHERE Bitvalue = [True | False]‎

או

WHERE Bitvalue = [-1 | 0]‎

WHERE Bitvalue = [1 | 0]‎

פרמטרים

[<שם שאינו עמודה מוגדרת>]

או

בתצוגת SQL, יש להשתמש בהצהרת PARAMETERS של SQL

@שם_פרמטר

הערות   

  • Access משתמש בתווי מרכאות (") סביב שמות טבלאות ואובייקטים. T-SQL יכול להשתמש בהם עבור שמות טבלאות עם רווחים, אך זהו אינו נוהל סטנדרטי של מתן שמות. ברוב המקרים, יש לשנות את שם האובייקט כך שלא יכלול רווחים. בנוסף, יש לשכתב את השאילתות כדי לשקף את שמות הטבלאות החדשים. השתמש בסוגריים מרובעים [ ] עבור טבלאות שלא ניתן לשנות את שמן, אך שאינן תואמות לתקני מתן השמות. בנוסף, Access מוסיף סוגריים נוספים סביב פרמטרים בשאילתות, אך ניתן להסירם ב- T-SQL.

  • שקול להשתמש בתבנית התאריך הקנונית, yyyy-mm-dd hh:nn:ss, אשר מהווה תקן של ODBC עבור תאריכים שמאוחסנים כתווים. תבנית זו מספקת דרך עקבית לייצג את התאריכים בכל מסדי הנתונים ומשמרת את סדר המיון של התאריכים.

  • כדי למנוע בלבול בעת השוואה בין ערכים בוליאניים, ניתן להשתמש בהשוואה הבאה עבור Access ו- SQL Server:

    • בדיקה לאיתור ערך False‏    WHERE Bitvalue = 0

    • בדיקה לאיתור ערך True‏    WHERE Bitvalue <> 0

ערכי Null

ערך Null אינו שדה ריק שפירושו "אין כלל ערך". ערך Null הוא מציין מיקום שפירושו שחסרים נתונים או שהם אינם ידועים. מערכות מסדי נתונים שמזהות ערכי Null מיישמות "לוגיקה של שלושה ערכים"; כלומר, הערך יכול להיות True,‏ False או לא ידוע. אם אינך מטפל כראוי בערכי 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, יש להשתמש באחת מתוך 11 פונקציות המרת סוג, שכל אחת מהן מתחילה באות C (אחת עבור כל סוג נתונים). לדוגמה, כדי להמיר מספר נקודה צפה למחרוזת:

CStr(437.324) returns the string "437.324".

ב- SQL Server, יש להשתמש בעיקר בפונקציות CAST ו- CONVERT של TSQL, למרות שקיימות פונקציות המרה אחרות לצרכים מיוחדים. לדוגמה, כדי להמיר מספר נקודה צפה למחרוזת:

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"

    year,‏ yy, ‏yyyy

    רבעון

    "q"

    quarter, ‏qq, ‏q

    חודש

    "m"

    month,‏ mm, ‏m

    יום בשנה

    "y"

    dayofyear,‏ dy,‏ y

    יום

    "d"

    day, ‏dd,‏ d

    שבוע

    "ww"

    wk, ‏ww

    יום בשבוע

    "w"

    weekday,‏ dw

    שעה

    "h"

    hour, ‏hh

    דקה

    "n"

    minute, ‏mi,‏ n

    שניה

    "s"

    second, ‏ss,‏ s

    אלפית שניה

    millisecond, ‏ms

השוואה בין הפונקציות

שאילתות Access יכולות להכיל עמודות מחושבות שמשתמשות לעתים בפונקציות של Access כדי לקבל תוצאות. בעת העברת שאילתות ל- SQL Server, עליך להחליף את הפונקציה של Access בפונקציה מקבילה של TSQL, אם היא זמינה. אם לא קיימת פונקציה תואמת של TSQL, בדרך כלל תוכל ליצור עמודה מחושבת כדי לבצע את הפעולות הרצויות. TSQL כולל מגוון רחב של פונקציות, ומומלץ לעיין בפונקציות הזמינות. לקבלת מידע נוסף, ראה מהן הפונקציות של מסד הנתונים של SQL?.

הטבלה הבאה מציגה את הפונקציות של Access שקיימות עבורן פונקציות תואמות של TSQL.

קטגוריה של Access

פונקציה של Access

פונקציה של TSQL

המרה

הפונקציה Chr

CHAR

המרה

הפונקציה Day

DAY

המרה

הפונקציה FormatNumber

FORMAT

המרה

הפונקציה FormatPercent

FORMAT

המרה

הפונקציה Str

STR

המרה

פונקציות המרת סוג

CAST ו- 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

זרימת תוכנית

הפונקציה Choose

CHOOSE

זרימת תוכנית

הפונקציה 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

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

גלה את יתרונות המנוי, עיין בקורסי הדרכה, למד כיצד לאבטח את המכשיר שלך ועוד.

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.