خانه - تلویزیون هوشمند
1c که برابر با مقدار یا تهی است. استفاده از تابع isnull()

27.06.2017

NULL، ISNULL() و IS NULL در جستارهای 1C

NULL چیست

خالیدر نتیجه پرس و جو، به این معنی است که هیچ مقداری وجود ندارد (مقدار خالی نیست، تهی نیست، مرجع تهی نیست).
به عنوان مثال، در نتیجه اتصال جداول پرس و جو، هنگام اتصال با استفاده از فیلدهای اتصال، مقداری در یکی از جداول یافت نشد. یا درخواست به یک صفت (خاصیت) غیر موجود اشاره دارد.

NULL همان NULL نیست!

اگر در یک درخواست 1C بخواهید یک انتخاب (شرط) با بررسی NULL اعمال کنید، ساختاری مانند "WHERE VT.Field1 = NULL" همیشه برمی گردد. دروغ! برای بررسی باید از اپراتور مخصوص استفاده کنید

در درخواست 1C NULL وجود دارد

برای بررسی یک مقدار (یا کار با مقادیر) برای NULL، باید از ساختار زیر استفاده کنید "WHERE VT.Field1 IS NULL" یا مثال دیگری، استفاده در یک ساختار انتخاب"SELECTION | WHEN VT.Field1 IS NULL | THEN" شایان ذکر است که عملکرد بررسی یک فیلد برای NULL یکی از پرمصرف ترین عملکردها در جستارهای 1C است. بنابراین، اگر می خواهید از آن در شرایط درخواست استفاده کنید، در نظر بگیرید که آیا امکان جایگزینی چنین چکی وجود دارد یا خیر پیوستن داخلی(نوعی از پیوستن به پرس و جوها که در آن فقط رکوردهای موجود در هر دو جدول در انتخاب باقی می مانند).

تابع ISNULL() در درخواست 1C

تابع ISNULL()به شما این امکان را می دهد که یک مقدار از دست رفته در یک فیلد درخواست را با یک مقدار مشخص (مقدار استاندارد، خرد) جایگزین کنید.
به عنوان مثال، اگر هیچ اطلاعاتی در مورد قیمت تمام شده یک محصول وجود ندارد، آن را برابر با 0 (صفر) نشان می دهیم "SELECT | ISNULL(T.Price, 0) AS Price | FROM Remaining Goods AS T"

نتیجه

پرس و جوها را درست و بهینه بنویسید. زیرا درخواست بد به معنای ترمز و کدهای نامناسب است)

سلام.
در ادامه انواع داده های اولیه، اخیراً آنها را بررسی کردیم و امروز در مورد آنها صحبت خواهیم کرد NULL را تایپ کنید.

نوع NULL یک لفظ است که می تواند فقط یک مقدار داشته باشد، مقدار "NULL".
NULL - برابر با مرجع تهی، فاصله، یا نوع Undefined نیست.

هنگام کار با پایگاه داده (هنگام پیوستن به جداول) استفاده می شود، برای تعیین مقدار گمشده هنگام کار با پایگاه داده استفاده می شود.
یک مقدار NULL را می توان با تخصیص این مقدار به یک متغیر به دست آورد:
متغیر = NULL.

مقادیر از نوع NULL در نتیجه اتصالات زمانی ایجاد می شوند که عنصری از یک جدول عنصر مربوطه را از جدول دیگر نداشته باشد. یک مقدار از نوع NULL ویژگی های خاصی دارد:
- مقایسه یک مقدار NULL با هر آرگومان دیگری همیشه false را برمی گرداند.

برای تعیین مقدار NULL، از ساختار استفاده کنید IS NULL (تهی است).
برای تبدیل نوع NULL از تابع استفاده کنید ISNULL (isNULL).

به منظور قطع فیلدهای حاوی مقادیر NULL در نتیجه یک درخواست، از ساختارهای زیر استفاده می شود: - NULL نیست - NULL نیست

مثال ها

نمونه ای از بررسی یک مقدار برای NULL

دایرکتوری انتخاب کنید. نامگذاری. نام، دایرکتوری نامگذاری. دایرکتوری PurchasingPrice WHERE. نامگذاری. قیمت خرید بله NULL

مثالی از تابع ()ISNULL
مقدار بازگشتی تابع ISNULL(): مقدار پارامتر اول، اگر پارامتر اول حاوی مقدار NULL نباشد، در غیر این صورت مقدار پارامتر دوم. در صورتی که نوع پارامتر اول رشته ای یا عددی باشد، پارامتر دوم به نوع پارامتر اول تبدیل می شود.

// مقدار را با فیلد مقدار دریافت کنید. اگر هیچ رکوردی وجود ندارد، 0 را دریافت کنید ISNULL(SUM(Quantity), 0 ) AS Quantity FROM Document را انتخاب کنید. Expense Inc. ترکیب

با احترام، برنامه نویس 1C.
نظرات خود را بنویسید، من به نظر شما علاقه مند هستم.

زبان پرس و جو 1C یکی از تفاوت های اصلی بین نسخه های 7.7 و 8 است. یکی از مهمترین نکات در یادگیری برنامه نویسی 1C زبان پرس و جو است. در 1C 8.3، پرس و جوها قدرتمندترین و مؤثرترین ابزار برای به دست آوردن داده ها هستند. زبان پرس و جو به شما امکان می دهد اطلاعات را از پایگاه داده به روشی راحت به دست آورید.

سینتکس به خودی خود بسیار یادآور T-SQL کلاسیک است، با این تفاوت که در 1C، با استفاده از زبان پرس و جو، فقط می توانید داده ها را با استفاده از ساختار Select دریافت کنید. این زبان همچنین از ساختارهای پیچیده تری پشتیبانی می کند، به عنوان مثال، (درخواست در یک درخواست). پرس و جوها در 1C 8 را می توان به دو زبان سیریلیک و لاتین نوشت.

در این مقاله سعی می کنم در مورد کلمات کلیدی اصلی در زبان پرس و جو 1C صحبت کنم:

  • انتخاب کنید
  • مجاز است
  • مختلف
  • بیان
  • اولین
  • برای تغییر
  • معنی
  • نوع مقدار (و عملگر REFERENCE)
  • انتخاب
  • دسته بندی بر اساس
  • داشتن
  • ISNULL
  • بله NULL
  • اتصالات - راست، چپ، داخلی، کامل.

و همچنین برخی از ترفندهای کوچک زبان 1C که با استفاده از آنها می توانید متن درخواست را بهینه بسازید.

برای اشکال زدایی پرس و جوها در سیستم 1C 8.2، یک ابزار ویژه ارائه شده است - کنسول پرس و جو. با استفاده از لینک - می توانید توضیحات را مشاهده و دانلود کنید.

بیایید مهم ترین و جالب ترین عملگرهای زبان پرس و جو 1C را بررسی کنیم.

انتخاب کنید

در زبان پرس و جو 1C Enterprise 8، هر درخواستی با یک کلمه کلیدی شروع می شود انتخاب کنید. در زبان 1C هیچ ساختار UPDATE، DELETE، CREATE TABLE، INSERT وجود ندارد؛ این دستکاری ها در فناوری شی انجام می شود. هدف آن فقط خواندن داده ها است.

مثلا:

انتخاب کنید
فهرست راهنمای فعلی
از جانب
Directory.Nomenclature AS فهرست فعلی

پرس و جو جدولی را با نام آیتم ها برمی گرداند.

نزدیک سازه انتخاب کنیدمی توانید کلمات کلیدی را پیدا کنید برای تغییر, مجاز, مختلف, اولین

مجاز- فقط رکوردهایی را از جدول انتخاب می کند که کاربر فعلی حقوق آنها را دارد.

مختلف- به این معنی است که نتیجه شامل خطوط تکراری نخواهد بود.

انتخاب (مورد)

اغلب این طراحی توسط برنامه نویسان دست کم گرفته می شود. نمونه ای از کاربرد آن:

فهرست راهنمای فعلی، نام،

WHEN Current Directory.Service THEN

"سرویس"

پایان نحوه مشاهده نامگذاری

Directory.Nomenclature AS فهرست فعلی

مثال یک مقدار متنی را در قسمت "نوع مورد" - "محصول" یا "سرویس" برمی گرداند.

جایی که

طراحی زبان پرس و جو 1C، که به شما امکان می دهد انتخاب را روی داده های دریافتی اعمال کنید. لطفا توجه داشته باشید که سیستم تمام داده ها را از سرور دریافت می کند و تنها پس از آن بر اساس این پارامتر انتخاب می شود.

انتخاب کنید
فهرست نام
از جانب
Current Directory.Nomenclature AS فهرست فعلی
WHERE CurrentDirectory.Service = TRUE

در مثال، ما رکوردهایی را انتخاب می کنیم که برای آنها مقدار ویژگی "Service" روی "True" تنظیم شده است. در این مثال می‌توانیم با شرط زیر به نتیجه برسیم:

"خدمات کجاست"

در اصل، ما ردیف هایی را انتخاب می کنیم که عبارت بعد از کلمه کلیدی برابر با "True" باشد.

می توانید از شرایط مستقیم در عبارات استفاده کنید:

کد WHERE = "005215"

با استفاده از عملگر "VALUE()" در شرایط، از دسترسی به عناصر و شمارش های از پیش تعریف شده در یک درخواست 1C استفاده کنید:

WHERE نوع مورد = مقدار (Enumeration.Item Types.Product)

مقادیر زمانی را می توان به صورت زیر مشخص کرد:

WHERE تاریخ دریافت > DATETIME(2012,01,01):

اغلب، شرایط به عنوان پارامترهای ارسال شده به درخواست مشخص می شود:

267 درس ویدیویی را در 1C به صورت رایگان دریافت کنید:

WHERE NomenclatureGroup= &NomenclatureGroup

اگر از نوع ترکیبی باشد، می توان یک شرط بر روی نوع ویژگی اعمال کرد:

اگر نیاز به محدود کردن انتخاب از لیست مقادیر یا آرایه دارید، می‌توانید موارد زیر را انجام دهید:

WHERE ثبت تجمع است. ثبت B (&فهرست اسناد برای انتخاب)

این شرایط همچنین می تواند پیچیده باشد که از چندین شرط تشکیل شده است:

WHERE تاریخ دریافت > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

دسته بندی بر اساس

طراحی زبان پرس و جو 1C 8.2 مورد استفاده برای گروه بندی نتایج.

مثلا:

انتخاب کنید
دریافت کالا و خدمات کالا.
SUM (دریافت کالا خدمات کالاها. مقدار) مقدار،
SUM(دریافت کالاخدمات کالاها.مبلغ) AS Amount
از جانب
سند دریافت کالا و خدمات کالا چگونه دریافت کالا و خدمات کالا

دسته بندی بر اساس
رسید کالاخدمات کالاها.کالا

این درخواست تمام رسیدها را بر اساس مقدار و مقدار بر اساس کالا خلاصه می کند.

علاوه بر کلمه کلیدی جمعمی توانید از سایر توابع جمع استفاده کنید: تعداد, تعداد متفاوت, بیشترین, کمترین, میانگین.

داشتن

طرحی که اغلب فراموش می شود اما بسیار مهم و کاربردی است. این به شما امکان می دهد انتخاب را در قالب یک تابع جمع مشخص کنید، این را نمی توان در طراحی انجام داد جایی که.

مثالی از استفاده از HAVING در درخواست 1C:

انتخاب کنید
دریافت کالا و خدمات کالا.
SUM (دریافت کالا خدمات کالاها. مقدار) مقدار،
SUM(دریافت کالاخدمات کالاها.مبلغ) AS Amount
از جانب
سند دریافت کالا و خدمات کالا چگونه دریافت کالا و خدمات کالا

دسته بندی بر اساس
دریافت کالا و خدمات کالا

SUM (دریافت کالا خدمات کالاها. مقدار) > 5

بنابراین تعداد محصولاتی را که بیش از 5 قطعه وارد شده اند انتخاب می کنیم.

معنی ()

مثلا:

WHERE Bank = Value (Directory.Banks.EmptyLink)

WHERE نوع نامگذاری = ارزش (Directory.Numenclature Types.Product)

WHERE نوع مورد = مقدار (Enumeration.Item Types.Service)

در درخواست تایپ کنید

نوع داده را می توان با استفاده از توابع TYPE() و VALUETYPE() یا با استفاده از عملگر REFERENCE منطقی بررسی کرد.

بیان()

عملگر Express در پرس و جوهای 1C برای تبدیل انواع داده استفاده می شود.

نحو: بیان(<Выражение>چگونه<Тип значения>)

با استفاده از آن می توانید مقادیر رشته را به تاریخ یا مقادیر مرجع را به داده های رشته ای و غیره تبدیل کنید.

در کاربردهای عملی، عملگر Express() اغلب برای تبدیل فیلدهایی با طول نامحدود استفاده می شود، زیرا فیلدهای با طول نامحدود را نمی توان انتخاب، گروه بندی و غیره کرد. اگر چنین فیلدهایی تبدیل نشوند، با خطا مواجه خواهید شد شما نمی توانید فیلدهایی با طول نامحدود و فیلدهایی از انواع ناسازگار را مقایسه کنید.

انتخاب کنید
ContactInformation.Object،
EXPRESS(ContactInfo.View AS ROW(150)) AS View
از جانب
ثبت اطلاعات اطلاعات تماس چگونه اطلاعات تماس

دسته بندی بر اساس
EXPRESS(ContactInfo.Representation AS ROW(150))،
ContactInformation.Object

ISNULL (ISNULL)

یک تابع بسیار مفید از زبان پرس و جو 1C است که مقدار را در رکورد بررسی می کند و اگر برابر باشد خالی،این به شما امکان می دهد آن را با ارزش خود جایگزین کنید. اغلب هنگام به دست آوردن جداول مجازی موجودی و گردش مالی به منظور پنهان کردن استفاده می شود خالیو یک 0 واضح (صفر) قرار دهید.

ISNULL(مالیات قبل از ماه. مزیت AppliedFSS، 0)

چنین تابعی از زبان پرس و جو 1C ISNULL در صورت عدم وجود مقدار، صفر را برمی گرداند، که از بروز خطا جلوگیری می کند.

پیوستن

4 نوع اتصال وجود دارد: ترک کرد, درست, کامل، داخلی.

اتصال چپ و راست

Joins برای پیوند دادن دو جدول بر اساس یک شرایط خاص استفاده می شود. ویژگی زمانی چپ پیوستناین است که جدول مشخص شده اول را به طور کامل می گیریم و جدول دوم را به صورت مشروط متصل می کنیم. فیلدهای جدول دوم که نمی توانند با شرط محدود شوند با مقدار پر می شوند خالی.

نمونه ای از پیوستن چپ در یک درخواست 1C:

کل جدول را برمی گرداند و فیلد "بانک" را فقط در مکان هایی پر می کند که شرط "Counterparties.Name = Banks.Name" وجود دارد. در صورت عدم رعایت شرایط، فیلد بانک به صورت تنظیم می شود خالی.

RIGHT JOIN به زبان 1C 8.3کاملا مشابه اتصال چپ، به استثنای یک تفاوت: در حق اتصالجدول "اصلی" دومی است نه اولی.

اتصال کامل

اتصال کاملبا چپ و راست تفاوت دارد زیرا همه رکوردها را از دو جدول نمایش می دهد و فقط آنهایی را که می تواند بر اساس شرایط به هم متصل شود به هم وصل می کند.

مثلا:

اتصال کامل
فهرست راهنمای بانک ها چگونه بانک ها

توسط

تنها در صورتی که شرط Join records برقرار باشد، زبان پرس و جو هر دو جدول را به طور کامل برمی گرداند. برخلاف اتصال چپ/راست، امکان دارد NULL در دو فیلد ظاهر شود.

پیوستن داخلی

پیوستن داخلیبا کامل تفاوت دارد زیرا فقط آن دسته از رکوردهایی را نشان می دهد که می توانند مطابق با یک شرایط خاص متصل شوند.

مثلا:

از جانب
دایرکتوری. مشتریان AS طرف مقابل

پیوستن داخلی
فهرست راهنمای بانک ها چگونه بانک ها

توسط
مشتریان.نام = بانک ها.نام

این پرس و جو فقط ردیف هایی را برمی گرداند که بانک و طرف مقابل در آنها نام یکسان دارند.

نتیجه

این تنها بخش کوچکی از نحو از زبان پرس و جو 1C 8 است؛ در آینده سعی خواهم کرد برخی از نکات را با جزئیات بیشتر، نمایش و موارد دیگر در نظر بگیرم!

خالی- ارزش از دست رفته.
نباید با مقدار صفر اشتباه گرفته شود! NULL یک عدد نیست، با فاصله، مرجع خالی یا تعریف نشده برابر نیست.

NULL یک مقدار شکل دهنده نوع است، یعنی. یک نوع NULL و یک مقدار واحد از این نوع وجود دارد.

مقادیر NULL در شرایط زیر در پرس و جو ظاهر می شوند:
الف) یک پیوست خارجی که در آن هیچ رکوردی در جدول دیگر یافت نشد (با یک چپ - در جدول دوم، با یک سمت راست - در اول، با یک کامل - در هر دو)
ب) دسترسی به جزئیات عناصر برای یک گروه و بالعکس.
ج) NULL در لیست فیلدهای انتخابی (SELECT)
د) دسترسی به جزئیات پیوند شکسته

تهی استدر عملگر SELECT استفاده می شود (مثل اینکه در حال بررسی خالی بودن مقدار (مقدار IS NULL) است):
کد 1C v 8.x
انتخاب
هنگامی که مقدار NULL است، سپس ResultIfNULL
معنی ELSE
پایان

مثالی دیگر:
کد 1C v 8.x SELECT

انتخاب زمانی که اقلام حسابداری باقی می مانند. مقدار باقیمانده صفر است سپس 0
در غیر این صورت حسابداری برای نامگذاری باقیمانده مقدار باقی مانده به عنوان مقدار باقی مانده
از جانب



جایی که

تابع ISNULL(مقدار، ResultIfNULL)اگر NULL نباشد مقدار پارامتر اول و در غیر این صورت مقدار پارامتر دوم را برمی‌گرداند
کوچک شده است SELECT...END، اما ISNULL ترجیح داده می شود.
کد 1C v 8.x
انتخاب کنید
ISNULL(Directory.Nomenclature.Article, "---") AS مقاله،
Directory.Nomenclature.Presentation AS Nomenclature

مثالی دیگر:
کد 1C v 8.x
انتخاب کنید
فهرست نامگذاری. نام،
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS QuantityRemaining
از جانب
Directory.Nomenclature AS DirectoryNomenclatures
اتصال سمت چپ ثبت تجمعات.
آیتم نرم افزار AccountingRemains.Nomenclature = فهرست نامگذاری فهرست.پیوند
جایی که
فهرست نامگذاری Directory.ThisGroup = FALSE
در این مثال، تمام عناصر دایرکتوری آیتم به دست می آید و پس از آن، برای هر آیتم، مانده های جاری از رجیستر انباشتگی به دست می آید. زیرا برای آیتمی که برای آن موجودی وجود ندارد، جدول مجازی موجودی رکوردی را برنمی‌گرداند، سپس در نتیجه اتصال در فیلد "Item AccountingRemaining.QuantityRemaining" مقادیر NULL برای آیتمی وجود خواهد داشت که برای آن موجود است. تعادل نداشتند برای اطمینان از اینکه به جای مقدار NULL، نتیجه درخواست حاوی مقدار 0 باشد، از تابع ISNULL() استفاده کردیم که جایگزینی مورد نظر را انجام می دهد.

ISNULLبه دلایل زیر با CHOICE متفاوت است:
الف) اگر ISNULL باشد، پرس و جو بهتر قابل خواندن است (ساده تر)
ب) اگر ISNULL، اگر یک عبارت پیچیده بررسی شود، سریعتر کار می کند زیرا یک بار محاسبه می شود
ج) اگر ISNULL باشد، اگر از نوع String (طول) یا Number (عمق بیت) باشد، عبارت جایگزین به نوع عبارت مورد آزمایش تبدیل می شود.

شما نمی توانید مقادیر NULL را با استفاده از برابری معمول بررسی کنید، زیرا SQL از منطق سه مقداری استفاده می کند - True، False، NULL، و نتیجه چنین مقایسه ای ناشناخته خواهد بود، که در 1C 8.0 مشابه FALSE است.
خالی<>0، بنابراین برای اتصالات بیرونی سمت چپ، مراجعه کنید. نامگذاری با جداول موجودی، قیمت، طرف مقابل با تسویه متقابل، در صورت عدم وجود چنین سوابقی NULL وجود خواهد داشت که برابر با 0 نیست. بهترین راه حل ISNULL است.

توجه! این یک نسخه مقدماتی از درس است که ممکن است مطالب آن ناقص باشد.

به عنوان دانشجو وارد سایت شوید

برای دسترسی به مطالب مدرسه به عنوان دانش آموز وارد شوید

زبان پرس و جو 1C 8.3 برای برنامه نویسان مبتدی: توابع و عملگرها برای کار با انواع (VALUE TYPE، TYPE، REFERENCE، ISNULL، EXPRESS)

بیایید به یاد داشته باشیم که هر ویژگی (ویژگی، فیلد) دایرکتوری، سند یا هر شیء کاربردی دیگری نوع خاص خود را دارد. و ما می توانیم به این نوع در پیکربندی نگاه کنیم:

در زبان پرس و جو، یک کلاس کامل از توابع و عملگرها برای کار با انواع جزئیات وجود دارد. بیایید به آنها نگاه کنیم.

تابع VALUE TYPE

این تابع یک پارامتر (مقدار) را می گیرد و نوع آن را برمی گرداند. برای وسایل توضیح داده شده در تصویر (بالا) طعمفهرست راهنما غذاموارد زیر برگردانده می شود:

حالا بیایید به لوازم جانبی نگاه کنیم ویژگی متمایزدر دایرکتوری شهرها:

می بینید که این پایه می تواند یکی از چندین نوع باشد: خط, دایرکتوری. سلیقه ها, دایرکتوری.رنگ ها. به این نوع جزئیات COMPOSITE می گویند.

اگر بخواهیم مقدار چنین جزئیاتی را در حالت 1C:Enterprise پر کنیم، سیستم از ما می‌پرسد که چه نوع مقداری وارد می‌شود:

و تنها پس از انتخاب ما به ما اجازه می دهد تا مقدار نوع انتخاب شده را وارد کنیم.

بنابراین، عناصر دایرکتوری از همان نوع ( دایرکتوری.شهرها) قادر به ذخیره در همان ویژگی ( ویژگی متمایز) مقادیر انواع مختلف (رشته، رنگ یا طعم).

با کلیک بر روی عناصر دایرکتوری می توانید این را برای خودتان ببینید شهرهادر حالت 1C: Enterprise. شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است.

در اینجا مقدار ویژگی متمایز یک عنصر دایرکتوری است طعم:

خط اینجاست:

و در اینجا به طور کلی یک عنصر از کتاب مرجع است رنگ ها:

اینها امکاناتی هستند که یک نوع داده ترکیبی برای ما باز می کند!

من تعجب می کنم که عملکرد چگونه رفتار خواهد کرد TYPE VALUESروی پایه ها عنصر متمایز، داشتن یک نوع داده ترکیبی:

این در حال حاضر بسیار جالب است. بیایید هر خط را جداگانه بررسی کنیم.

نوع ارزش ویژگی متمایز برای عنصر روسیه برابر است خالی. این اولین بار است که با این نوع برخورد می کنیم. مقادیر این نوع صرفاً برای تعیین مقدار گمشده هنگام کار با پایگاه داده استفاده می شود.

این درست است، زیرا عنصر روسیه یک گروه است و نه یک عنصر دایرکتوری معمولی شهرها، پس فیلد ندارد ویژگی متمایز. و نوع مقدار از دست رفته، همانطور که در بالا خواندیم، همیشه برابر است خالی.

نوع ارزش ویژگی متمایز برای Perm برابر است با طعم. این درست است، زیرا مقدار ویژگی متمایز وارد شده در پایگاه داده برای شهر Perm یک پیوند به عنصر دایرکتوری است. طعم.

برای کراسنویارسک، نوع صفت برابر است با رنگ ها، زیرا مقدار انتخاب شده در پایگاه داده پیوندی به عنصر دایرکتوری است رنگ ها.

برای Voronezh نوع صفت برابر است با خط، زیرا مقدار وارد شده در پایگاه داده یک رشته معمولی است.

هند دوباره یک گروه است، بنابراین هیچ اهمیتی ندارد. و نوع مقدار از دست رفته، همانطور که به یاد داریم، برابر است خالی.

موضوع اینجاست. اگر به عنصر دایرکتوری بروید شهرهابا نام سائو پائولو، سپس خواهید دید که میدان ویژگی متمایزاصلا پر نشده خالی است. آ تمام فیلدهای خالی از نوع ترکیبی معنای خاصی دارندتعریف نشده

با تعریف نشدهما همچنین برای اولین بار با آن روبرو می شویم. معنی تعریف نشدهزمانی استفاده می شود که لازم است از یک مقدار خالی استفاده شود که به هیچ نوع دیگری تعلق ندارد. این دقیقاً وضعیت ماست. و نوع ارزش تعریف نشدههمانطور که احتمالاً قبلاً حدس زده اید، برابر است با خالی.

تابع TYPE

فقط یک پارامتر - نام نوع اولیه ( خط, عدد, تاریخ, بولیان، یا نام جدولی که می خواهید نوع پیوند آن را دریافت کنید.

نتیجه این ساختار مقداری از نوع Type برای نوع مشخص شده خواهد بود.

مبهم به نظر می رسد، اینطور نیست؟

بیایید به کاربرد این طرح نگاه کنیم و همه چیز بلافاصله در جای خود قرار می گیرد.

فرض کنید باید همه ورودی های دایرکتوری را انتخاب کنیم شهرها، که دارای پایه های کامپوزیت هستند ویژگی متمایزدارای مقدار نوع است خط:

حالا بیایید تمام رکوردهایی را که دارای مقادیر مشخصه هستند انتخاب کنیم ویژگی متمایزپیوندهایی به عناصر دایرکتوری هستند رنگ ها(جدول دایرکتوری.رنگ ها):

عقب نشینی

همانطور که به یاد دارید، برخی از عناصر دایرکتوری شهرهالوازم جانبی ندارند ویژگی متمایز. تابع TYPE VALUESبرای چنین عناصری تولید می کند خالی.

چگونه می توان چنین عناصری را در یک پرس و جو انتخاب کرد؟ برای این کار عملگر منطقی خاصی در نظر گرفته شده است تهی است(با عملکرد اشتباه گرفته نشود ISNULLکه در ادامه به آن خواهیم پرداخت). شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است.

در اینجا نمونه ای از کاربرد آن است:

عالی. اما آیا متوجه شدید که هیچ عنصری از سائوپائولو، نوع ارزش props وجود ندارد ویژگی متمایزکه او هم داد خالی. چرا این اتفاق افتاد؟

اما موضوع این است که وضعیت برای گروه ها (روسیه، هند، برزیل)، که برای پر کردن جزئیات ویژگی متمایزدر اصل غیرممکن است، زیرا آنها اصلاً آن را ندارند، با وضعیت عنصر سائوپائولو متفاوت است، که پر کردن قطعات برای آن ممکن است، اما به سادگی پر نمی شود و همانطور که به یاد می آوریم برابر است با یک ارزش ویژه تعریف نشده.

برای انتخاب تمام رکوردهایی که دارای شرایط لازم هستند ویژگی متمایزدر حال حاضر، اما پر نشده، ساختار متفاوتی باید استفاده شود:

اما مقایسه با UNDEFINED برای تعیین ویژگی‌های خالی (پر نشده) فقط برای انواع ترکیبی کار می‌کند.

به هر حال، عملگر منطقی IS NULL یک شکل نفی دارد که به نظر می رسد:

عملگر منطقی LINK

به عنوان مثال، بیایید از دایرکتوری انتخاب کنیم شهرهافقط آن دسته از رکوردهایی که دارای ارزش یک ویژگی ترکیبی هستند ویژگی متمایزپیوندی به یک عنصر دایرکتوری هستند طعم:

همانطور که به یاد دارید، ما می‌توانیم همان مشکل را با استفاده از آن حل کنیم TYPE VALUESو تایپ کنید:

تابع ISNULL

این تابع برای جایگزینی یک مقدار طراحی شده است خالیبه معنای متفاوت

ما به یاد داریم که معنی خالیاگر ویژگی درخواستی (فیلد، ویژگی) وجود نداشته باشد، بازگردانده می شود.

به عنوان مثال، لوازم جانبی ویژگی متمایزبرای گروه های دایرکتوری شهرها:

تابع ISNULLاگر این مقدار برابر باشد به ما کمک می کند مقدار متفاوتی را خروجی کنیم خالی. شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است. بگذارید در این مورد خط "هیچ تکیه گاهی وجود ندارد!" باشد:

به نظر می رسد که اگر اولین پارامتر تابع ISNULLنا برابر خالی، سپس او برمی گردد. اگر NULL باشد، پارامتر دوم برگردانده می شود.

تابع EXPRESS

این تابع فقط برای فیلدهایی است که نوع ترکیبی دارند. یک مثال عالی از چنین زمینه ای ملک است ویژگی متمایزبرای عناصر دایرکتوری شهرها.

همانطور که به یاد داریم، فیلدهای ترکیبی می توانند یکی از چندین نوع مشخص شده در پیکربندی باشند.

برای میدان ویژگی متمایزچنین انواع معتبر هستند خط, دایرکتوری.رنگ هاو دایرکتوری. سلیقه ها.

گاهی اوقات لازم است مقادیر یک فیلد ترکیبی به یک نوع خاص ریخته شود.

بیایید تمام مقادیر فیلد را فهرست کنیم ویژگی متمایزتایپ کردن مرجع. رنگ ها:

در نتیجه، تمام مقادیر عناصر که از نوع بودند دایرکتوری.رنگ ها،پر باقی ماندند و به نوع مشخص شده تبدیل شدند. تمام مقادیر انواع دیگر ( خط, دایرکتوری. سلیقه ها) اکنون برابر هستند خالی. این ویژگی ریخته گری نوع با استفاده از تابع است بیان.

می توانید یک نوع را به یک نوع اولیه ( بولیان, عدد, خط, تاریخ) یا به یک نوع مرجع. شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است. اما نوعی که قالب گیری به آن ساخته می شود باید در لیست انواع این فیلد ترکیبی قرار گیرد، در غیر این صورت سیستم خطا خواهد کرد.

امتحان بده

شروع تست

1. صحیح ترین عبارت را انتخاب کنید

2. جزئیاتی که می توانند مقادیر یکی از چندین نوع را بگیرند نامیده می شوند

3. برای تعیین نوع مقدار ویژگی، از تابع استفاده کنید

4. جزئیات خالی از نوع کامپوزیت مهم است



 


خواندن:



برهم نهی توابع جبر منطقی توابع بولی یکنواخت

برهم نهی توابع جبر منطقی توابع بولی یکنواخت

تناظر G بین مجموعه های A و B را زیر مجموعه می گویند. اگر، آنگاه می گویند b با a مطابقت دارد. بسیاری از موارد مرتبط ...

سیستم اطلاعاتی چیست؟

سیستم اطلاعاتی چیست؟

پورتال های دولتی، وب سایت های ESIA. سیستم یکپارچه شناسایی و احراز هویت - esia.gosuslugi.ru EPGU. پورتال واحد خدمات عمومی...

انتقال از یک عبارت منطقی به یک مدار منطقی و بالعکس

انتقال از یک عبارت منطقی به یک مدار منطقی و بالعکس

کار آزمایشگاهی شماره 4. اجرای مدار عناصر منطقی ساخت مدارهای منطقی بخش تئوری. پردازش بر اساس ...

خجالت نیژنی نووگورود از پست روسیه

خجالت نیژنی نووگورود از پست روسیه

پس از معرفی سیستم عامل جدید EAS OPS که هزینه آن 890 میلیون روبل بود، زمان خدمات رسانی به مشتریان در دفاتر پست در منطقه...

فید-تصویر RSS