وظائف SQL موحدة في ArcGIS Online

يحتاج ArcGIS Online من المطورين أن يتسخدموا استعلامات SQL القياسية عند الاستعلام عن طبقات المعالم المستضافة. يساعد استخدام استعلامات SQL القياسية في الحد من انتهاكات SQL. تدعم جميع تطبيقات ArcGIS استعلامات SQL القياسية.

قيود الاستعلامات الموحدة

  • يتم تطبيق الاستعلامات القياسية على المنظمة بأكملها، يتعذر تعطيلها لبعض التطبيقات.
  • الاستعلامات الموحدة غير مدعومة بين مسافات العمل المختلفة.
  • لا يتم دعم الاستعلامات الفرعية في صورة عبارة أين، على سبيل المثال، POP_2010 = (SELECT min(POP_2010) FROM counties.
  • الاستعلامات من خدمات قاعدة البيانات، على سبيل المثال، Microsoft Azure SQL Database، ليست مدعومة.

وظائف SQL المدعومة في ArcGIS Online

إذا كنت مطور تطبيق حاليًا وتستخدم قاعدة بيانات محددة -بناء جملة عبارة أين، ستحتاج إلى تحديث عبارات أين داخل كود التطبيق لاستخدام بنية SQL الشائعة بواسطة ArcGIS Online. تعرض الجداول التالية أي من وظائف SQL تكون مدعومة وكذلك بنية كلاً منها. عند استخدام الوظائف التالية وبناء الجملة في التطبيقات، يقوم ArcGIS Online بتحويلها لتأكيد مواصفات قاعدة البيانات المستخدمة من قبل طبقة المعلم.

دالات التاريخ

وظيفةالوصف

CURRENT_DATE()

يُرجع التاريخ الحالي في زمن UTC.

تعتمد القيمة المعروضة على العميل الذي تستخدمه. في ArcGIS Online، تظهر التواريخ في المنطقة الزمنية لمؤسستك أو ملفك الشخصي.

CURRENT_TIME()

يُرجع تاريخ وزمن UTC الحالي (ساعات ودقائق وثواني).

تعتمد القيمة المعروضة على العميل الذي تستخدمه. في ArcGIS Online، يتم عرض الوقت بالتوقيت المحلي لمؤسستك أو ملفك الشخصي.

CURRENT_TIMESTAMP()

يُرجع تاريخ وزمن UTC الحالي (ساعات ودقائق وثواني وميلي ثانية).

تعتمد القيمة المعروضة على العميل الذي تستخدمه. في ArcGIS Online، يتم عرض الوقت بالتوقيت المحلي لمؤسستك أو ملفك الشخصي.

EXTRACT(<unit> FROM <date>)

يرجع جزء واحد (<unit>) من <date> المحدد. تشمل قيم <unit> الممكنة، على سبيل المثال لا الحصر، year وmonth وday وhour وminute.

تستخرج الأمثلة التالية وحدات مختلفة من قيمة التاريخ والوقت 2016-12-21 15:11:

  • EXTRACT(MONTH FROM TIMESTAMP '2016-12-21 15:11:00') - تُرجع 12.
  • EXTRACT(DAY FROM TIMESTAMP '2016-12-21 15:11:00') - تُرجع 21.
  • EXTRACT(HOUR FROM TIMESTAMP '2016-12-21 15:11:00') - تُرجع 15.

دالات الرقمية

وظيفةالوصف

ABS(<number>)

إرجاع القيمة المطلقة (موجبة) للعدد الذي تحدده.

CAST(<number> AS FLOAT | INT)

يُحول الرقم إلى نوع مختلف. تحوِّل دالة FLOAT الرقم المحدد إلى رقم مزدوج، كما تحوله دالة INT إلى عدد صحيح.

في المثال الأول أدناه، يتم تحويل الرقم إلى عدد صحيح. ولأن الأعداد الصحيحة هي أعداد كلية، فإن الناتج هو 1424. في المثال الثاني، يتم تحويل عدد صحيح إلى عدد عشري، مما ينتج رقمًا به مواضع عشرية، 1424.0

  • CAST(1424.49 AS INT)
  • CAST(1424 AS FLOAT

CEILING(<number>)

إرجاع أصغر عدد صحيح أكبر من أو يساوي العدد المحدد.

يُرجع المثال التالي الرقم 13:

CEILING(12.93)

COS(<number>)

تُرجع جيب التمام المثلثي لـ <number>، المُفترض أن يكون زاوية في التقديرات الدائرية.

FLOOR(<number>)

يُرجع أكبر عدد صحيح أقل من أو يساوي الرقم المحدد.

يُرجع المثال التالي الرقم 12:

FLOOR(12.93)

LOG(<number>)

اللوغاريتم الطبيعي للرقم المحدد.

LOG10(<number>)

اللوغاريتم بأساس 10 للرقم المحدد.

MOD(<number>, <n>)

إرجاع المتبقي بعد قسمة (<number>) المقسوم على المقسوم عليه <n>. يجب أن يكون كلا من <n> و<number> بنوع عدد صحيح.

تتضمن الأمثلة ما يلي:

  • MOD(10, 4) - النتيجة هي 2.
  • MOD(CAST(DBLFIELD AS INT), 4) - DBLFIELD هو حقل نوع مزدوج؛ لذا يجب توفّر دالة CAST لتحويل القيم من مزدوج إلى عدد صحيح.

NULLIF(<number>, <value>)

تُرجع null إذا كان الرقم المحدد يساوي القيمة المحددة. يتم استخدام NULLIF بشكل شائع لتجنّب أخطاء القسمة على صفر بواسطة إعداد <value> على 0.

أينما تواجه عملية حسابية قيمة حقل null في أي من وسائطها، تصبح نتيجة العملية الحسابية null.

مثال، افترض أنك بحاجة إلى حساب حقل مزدوج لينقسم TOTALPOP على POP18. إذا كان لأي معلم قيمة POP18 تساوي صفرًا، فسينتج عن العملية الحسابية خطأ القسمة على صفر. يمكنك إنشاء عامل تصفية لإخفاء السجلات التي يكون فيها POP18 صفرًا، ومن ثم إجراء العملية الحسابية. اختصار لاستخدام NULLIF:

TOTALPOP / NULLIF(POP18, 0) - تُرجع null إذا كان POP18 يساوي صفرًا؛ وإلا، يتم إرجاع قيمة TOTALPOP / POP18.

POWER(<number> , <y>)

تُرجع قيمة العدد المحدد مرفوعًا إلى القوة المحددة (<y>).

يُرجع المثال التالي الرقم 32768:

POWER(8,5)

ROUND(<number> , <length>)

يُرجع الرقم الذي تحدده إلى الطول المُحدد.

إذا استخدمتَ رقمًا موجبًا لـ <length>، فسيتم تقريب الرقم إلى الموضع العشري على يمين النقطة العشرية. عندما يكون <length> رقمًا سالبًا، يتم تقريب <number> المحدد على يسار النقطة العشرية.

فيما يلي أمثلة على ذلك:

  • ROUND(10.9934,2) - إرجاع 10.99.
  • ROUND(10.9964,2) - إرجاع 11.00.
  • ROUND(111.0,-2) - تُرجع 100.00.

SIN(<number>)

تُرجع جيب الزاوية المثلثي لـ <number> المحدد، والذي يُفتَرَض أن يكون زاوية في التقديرات الدائرية.

TAN(<number>)

تُرجع مماس <number> المحدد، والذي يُفتَرَض أن يكون زاوية في التقديرات الدائرية.

TRUNCATE(<number>,<decimal_place>)

اقتطاع <number> عند <decimal_place> المحدد.

يقتطع <decimal_place> الموجب الموضع العشري المُحدد. عندما يكون <decimal_place> رقمًا سالبًا، يتم اقتطاع <number> في الجانب الأيسر من النقطة العشرية.

في المثال الأول، تم اقتطاع الأرقام الموجودة على يمين العلامة العشرية لتشمل رقمين فقط، مما ينتج القيمة 111.99. في المثال الثاني، يتم اقتطاع الأرقام الموجودة على يسار العلامة العشرية، مما ينتج القيمة 100.00.

  • TRUNCATE(111.996,2)
  • TRUNCATE(111.996,-2)

دالات السلسلة

وظيفةالوصف

CAST(<string> AS DATE | TIME)

تحويل السلسلة إلى تاريخ أو وقت إذا كانت قيمة السلسلة بتنسيق مدعوم.

إذا كانت السلسلة بتنسيق 'شهر/يوم/سنة ساعة:دقيقة:ثانية' أو 'سنة-شهر-يوم'، يمكنك تحويلها إلى تاريخ. إذا كانت السلسلة بتنسيق 'ساعة:دقيقة:ثانية'، يمكنك تحويلها إلى نوع تاريخ الوقت فقط (TIME).

على سبيل المثال، يمكن تحويل السلسلة التالية إلى تاريخ:

CAST('1988-05-30' AS DATE)

CHAR_LENGTH(<string>)

إرجاع عدد الأحرف في السلسلة المحددة. تكون النتيجة عدد صحيح.

على سبيل المثال، تُرجع العبارة التالية الرقم 8:

CHAR_LENGTH('Redlands')

CONCAT(<string1>, <string2>)

تسلسل قيمتي سلسلة.

يُمكن توفير سلسلتين فقط. لتسلسل أكثر من سلسلتين، قم بتضمين دالتي CONCAT المتتاليتين، كما هو مُوضح أدناه.

المثال الأول أدناه يربط بين الحرفين A وB. يوضح المثال الثاني دالة CONCAT متداخلة لربط ثلاث قيم سلسلة، A، و:، وB.

  • CONCAT('A', 'B') - النتيجة هي 'AB'.
  • CONCAT('A', CONCAT(':', 'B')) - النتيجة هي 'A:B'.

يتم تحويل القيم الخالية إلى سلسلة فارغة.

CURRENT_USER

عندما يتم تضمين دالة CURRENT_USER في استعلام، فإنها تعمل بشكل مشابه للمتغير؛ ويتم تحديد اسم المستخدم للمستخدم الذي يقوم بالوصول إلى طبقة المعالم المستضافة أو عرض طبقة المعالم المستضافة واستخدامه في الاستعلام.

على سبيل المثال، إذا قام المستخدم، planner3، بتسجيل الدخول إلى المؤسسة للوصول إلى عرض طبقة المعالم المستضافة الذي يحتوي على تعريف الاستعلام التالي، فسيتم إرجاع المعالم التي يحتوي حقل staffmember فيها على القيمة planner3 فقط إلى المستخدم المتصل:

staffmember=current_user

في المثال التالي، يتم تخزين قيم متعددة في الحقل staffmember. ستعمل عبارة where التالية بالبحث عن اسم المستخدم الحالي في قيمة النص في حقل staffmember حتى إذا تم تخزين أسماء مستخدمين متعددة في الحقل:

where=position(current_user in staffmember)>0

POSITION(<substring>, <string>)

إرجاع موضع الحدث الأول للسلسة الفرعية المحددة في السلسلة التي تحددها. إن لم يتم العثور على السلسلة الفرعية، فإن النتيجة ستكون 0.

في المثال الأول أدناه، الناتج هو 5 لأن الحرف الأول (b) من السلسلة الفرعية (boat) هو الحرف الخامس في السلسلة (Sailboat). في المثال الثاني، الناتج هو 0، لأن السلسلة الفرعية (motor) غير موجودة في السلسلة.

  • POSITION('boat', 'Sailboat')
  • POSITION('motor', 'Sailboat')

SUBSTRING(<string>, <start>, <length>)

تُرجع جزء من قيمة سلسلة، <start> هو فهرس عدد صحيح يُحدد مكان بدء الأحرف التي تم إرجاعها، كما يعد <length> عدد الأحرف المطلوب إرجاعها.

راجع الأمثلة التالية:

  • SUBSTRING('Sailboat', 5, 4) - النتيجة هي 'boat'.
  • SUBSTRING('Sailboat', 1, 4) - النتيجة هي 'Sail'.
  • SUBSTRING('Sailboat', 5, 100) - النتيجة هي 'boat'.

TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>)

إرجاع سلسلة حيث تتم إزالة جميع المسافات البادئة أو اللاحقة من السلسلة التي تحددها.

في المثال التالي، توجد مسافة قبل السلسلة San Bernardino وبعدها. يتم استخدام الكلمة الأساسية BOTH لتقليص سلسلة المسافة (المشار إليها باستخدام علامتي اقتباس مفردتين مع مسافة بينهما) من بداية سلسلة النص ونهايتها:

TRIM(BOTH ' ' FROM ' San Bernardino ')

يؤدي ذلك إلى إرجاع السلسلة 'San Bernardino'.

UPPER(<string>)

إرجاع سلسلة حيث يتم تحويل جميع الأحرف إلى أحرف كبيرة.

في هذا المثال، يتم تحويل جميع الأحرف في سلسلة Sailboat إلى أحرف كبيرة، مما ينتج السلسلة 'SAILBOAT':

UPPER('Sailboat')

LOWER(<string>)

إرجاع سلسلة حيث يتم تحويل جميع الأحرف إلى أحرف صغيرة.

في المثال التالي، يتم إرجاع 'sailboat':

LOWER('Sailboat')