إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
تحويل القيمة expr إلى نوع typeالبيانات الهدف . عامل التشغيل هذا هو مرادف ل :: (علامة النقطين) عامل التشغيل
بناء الجملة
cast(sourceExpr AS targetType)
الوسيطات
sourceExpr: أي تعبير قابل للصب.targetType: نوع بيانات النتيجة.
المرتجعات
النتيجة هي نوع targetType.
المجموعات التالية من صب نوع البيانات صالحة:
| المصدر (صف) الهدف (العمود) | خلاء | عددي | خيط | تاريخ | الطابع الزمني | TIMESTAMP_NTZ | الفاصل الزمني للشهر السنوي | الفاصل الزمني لليوم | منطقيه | ثنائي | صفيف | خريطة | البنيه | متغير | كائن |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| خلاء | نعم | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | N |
| عددي | N | نعم | السنة | N | السنة | N | نعم | السنة | السنة | N | N | N | N | السنة | N |
| خيط | N | نعم | السنة | السنة | السنة | السنة | السنة | السنة | السنة | السنة | N | N | N | السنة | N |
| تاريخ | N | N | نعم | السنة | السنة | السنة | N | N | N | N | N | N | N | السنة | N |
| الطابع الزمني | N | نعم | السنة | السنة | السنة | السنة | N | N | N | N | N | N | N | السنة | N |
| TIMESTAMP_NTZ | N | N | نعم | السنة | السنة | السنة | N | N | N | N | N | N | N | السنة | N |
| الفاصل الزمني للشهر السنوي | N | نعم | السنة | N | N | N | السنة | N | N | N | N | N | N | N | N |
| الفاصل الزمني لليوم | N | نعم | السنة | N | N | N | N | السنة | N | N | N | N | N | N | N |
| منطقيه | N | نعم | السنة | N | السنة | N | N | N | السنة | N | N | N | N | السنة | N |
| ثنائي | N | نعم | السنة | N | N | N | N | N | N | السنة | N | N | N | السنة | N |
| صفيف | N | N | السنة | N | N | N | N | N | N | N | السنة | N | N | السنة | N |
| خريطة | N | N | السنة | N | N | N | N | N | N | N | N | السنة | N | N | N |
| البنيه | N | N | السنة | N | N | N | N | N | N | N | N | N | السنة | N | N |
| متغير | N | نعم | السنة | السنة | السنة | السنة | N | N | نعم | السنة | السنة | السنة | السنة | السنة | N |
| كائن | N | N | N | N | N | N | N | N | N | N | N | نعم | السنة | N | N |
القواعد والقيود المستندة إلى targetType
تحذير
في Databricks Runtime، إذا كان spark.sql.ansi.enabled هو false، فلن يتسبب تجاوز السعة في حدوث خطأ ولكن بدلا من ذلك سيقوم "بتضمين" النتيجة.
sourceExpr ستؤدي القيمة ذات التنسيق غير الصالح أو الأحرف غير الصالحة NULLل targetType إلى .
عددي
targetType إذا كان هو رقمي وكان sourceExpr من النوع:
-
النتيجة هي
NULLمن النوع الرقمي المحدد. -
إذا كان
targetTypeرقما متكاملا، يتمsourceExprاقتطاع النتيجة إلى عدد صحيح.وإلا، يتم
sourceExprتقريب النتيجة إلى احتواء المقياس المتوفر لtargetType.إذا كانت القيمة خارج نطاق
targetType، يتم رفع خطأ تجاوز.استخدم try_cast لتحويل أخطاء تجاوز السعة إلى
NULL. -
sourceExprتتم قراءة كقيمة حرفية لtargetType.إذا
sourceExprلم يتوافق مع تنسيق القيم الحرفية، يتم رفع خطأ.إذا كانت القيمة خارج نطاق
targetType، يتم رفع خطأ تجاوز.استخدم try_cast لتحويل أخطاء التنسيق الزائدة وغير الصالحة إلى
NULL. -
والنتيجة هي عدد الثوان المنقضية بين
1970-01-01 00:00:00 UTCوsourceExpr.إذا كان
targetTypeرقما متكاملا، يتم اقتطاع النتيجة إلى عدد صحيح.وإلا، يتم تقريب النتيجة إلى احتواء المقياس المتوفر ل
targetType.إذا كانت النتيجة خارج نطاق
targetType، يتم رفع خطأ تجاوز.استخدم try_cast لتحويل أخطاء تجاوز السعة إلى
NULL. -
ينطبق على:
Databricks SQL
Databricks Runtime 11.3 LTS وما فوقيجب أن يكون نوع الهدف رقما دقيقا.
نظرا إلى أن
INTERVAL upper_unit TO lower_unitالنتيجة تقاس بالعدد الإجمالي لlower_unit.lower_unitإذا كان هوSECOND، يتم تخزين الثويات الكسرية على يمين الفاصلة العشرية. بالنسبة لجميع الفواصل الزمنية الأخرى، تكون النتيجة دائما رقما لا يتجزأ. -
إذا كان
sourceExpr:true: النتيجة هي 1.false: النتيجة هي 0.NULL: النتيجة هيNULL.
-
تنطبق قواعد نوع القيمة الفعلية للنوع
VARIANT.
الأمثلة
> SELECT cast(NULL AS INT);
NULL
> SELECT cast(5.6 AS INT);
5
> SELECT cast(5.6 AS DECIMAL(2, 0));
6
> SELECT cast(-5.6 AS INT);
-5
> SELECT cast(-5.6 AS DECIMAL(2, 0));
-6
> SELECT cast(128 AS TINYINT);
Overflow
> SELECT cast(128 AS DECIMAL(2, 0));
Overflow
> SELECT cast('123' AS INT);
123
> SELECT cast('123.0' AS INT);
Invalid format
> SELECT cast(TIMESTAMP'1970-01-01 00:00:01' AS LONG);
1
> SELECT cast(TIMESTAMP'1970-01-01 00:00:00.000001' AS DOUBLE);
1.0E-6
> SELECT cast(TIMESTAMP'2022-02-01 00:00:00' AS SMALLINT);
error: overflow
> SELECT cast(true AS BOOLEAN);
1
> SELECT cast(INTERVAL '1-2' YEAR TO MONTH AS INTEGER);
14
> SELECT cast(INTERVAL '1:30.5' MINUTE TO SECOND AS DECIMAL(5, 2));
90.50
> SELECT cast(TRUE AS INT);
1
> SELECT cast(FALSE AS INT);
0
> SELECT cast('15'::VARIANT AS INT);
15
سلسلة
targetType إذا كان هو نوع STRING وكان sourceExpr من النوع:
-
النتيجة هي سلسلة
NULL. -
والنتيجة هي الرقم الحرفي مع علامة ناقص اختيارية ولا توجد أصفار بادئة باستثناء الرقم الفردي إلى يسار الفاصلة العشرية.
targetTypeإذا كان معDECIMAL(p, s)s0 أكبر، تتم إضافة فاصلة عشرية وتتم إضافة الأصفار اللاحقة لأعلى للتحجيم. -
إذا كان الرقم المطلق أقل من ذلك
10,000,000وأكبر أو يساوي0.001، يتم التعبير عن النتيجة دون تدوين علمي برقم واحد على الأقل على جانبي الفاصلة العشرية.بخلاف ذلك، يستخدم Azure Databricks مانتيسا متبوعا ب
Eو أس. تحتوي mantissa على علامة طرح بادئة اختيارية متبوعة برقم واحد إلى يسار الفاصلة العشرية، والحد الأدنى لعدد الأرقام أكبر من الصفر إلى اليمين. يحتوي الأس على علامة طرح بادئة اختيارية. -
إذا كانت السنة بين 9999 BCE و9999 CE، فإن النتيجة هي تاريخ سلسلة النموذج
-YYYY-MM-DDوعلىYYYY-MM-DDالتوالي.بالنسبة للسنوات السابقة أو بعد هذا النطاق، تتم إضافة العدد الضروري من الأرقام إلى مكون
+السنة ويتم استخدامه ل CE. -
إذا كان العام بين 9999 BCE و9999 CE، فإن النتيجة هي الطوابع الزمنية للنموذج
-YYYY-MM-DD hh:mm:ssوعلىYYYY-MM-DD hh:mm:ssالتوالي.بالنسبة للسنوات السابقة أو بعد هذا النطاق، تتم إضافة العدد الضروري من الأرقام إلى مكون
+السنة ويتم استخدامه ل CE.تتم إضافة الثوان الكسرية
.f...إذا لزم الأمر. -
إذا كان العام بين 9999 BCE و9999 CE، فإن النتيجة هي الطوابع الزمنية للنموذج
-YYYY-MM-DD hh:mm:ssوعلىYYYY-MM-DD hh:mm:ssالتوالي.بالنسبة للسنوات السابقة أو بعد هذا النطاق، تتم إضافة العدد الضروري من الأرقام إلى مكون
+السنة ويتم استخدامه ل CE.تتم إضافة الثوان الكسرية
.f...إذا لزم الأمر. -
والنتيجة هي أقصر تمثيل لها للفاصل الزمني الحرفي. إذا كان الفاصل الزمني سالبا، يتم تضمين العلامة
interval-stringفي . بالنسبة للوحدات الأصغر من 10، يتم حذف الأصفار البادئة.تحتوي سلسلة الفاصل الزمني النموذجية للشهر على النموذج:
INTERVAL 'Y' YEARINTERVAL 'Y-M' YEAR TO MONTHINTERVAL 'M' MONTH
-
والنتيجة هي أقصر تمثيل لها للفاصل الزمني الحرفي. إذا كان الفاصل الزمني سالبا، يتم تضمين العلامة
interval-stringفي . بالنسبة للوحدات الأصغر من 10، يتم حذف الأصفار البادئة.تحتوي سلسلة الفاصل الزمني لليوم النموذجية على النموذج:
INTERVAL 'D' DAYINTERVAL 'D h' DAY TO HOURINTERVAL 'D h:m' DAY TO MINUTEINTERVAL 'D h:m:s' DAY TO SECONDINTERVAL 'h' HOURINTERVAL 'h:m' HOUR TO MINUTEINTERVAL 'm:s' MINUTE TO SECONDINTERVAL 's' SECOND
-
نتيجة القيمة المنطقية
trueهي القيمة الحرفيةSTRINGtrue. لأنهاfalseقيمة STRING الحرفيةfalse. لأنهاNULLسلسلة NULL. -
والنتيجة هي الثنائي
sourceExprالذي يتم تفسيره على أنه تسلسل أحرف UTF-8.لا يتحقق Azure Databricks من صحة أحرف UTF-8. لن يقوم التحويل من
BINARYإلىSTRINGأبدا بإدخال أحرف استبدال أو رفع خطأ. -
والنتيجة هي قائمة مفصولة بفواصل من العناصر المدلى بها، والتي يتم تجميدها بأقواس مربعة
[ ]. مسافة واحدة تتبع كل فاصلة.NULLيتم ترجمة عنصر إلى قيمة حرفيةnull.لا يقوم Azure Databricks باقتباس العناصر الفردية أو وضع علامة عليها، والتي قد تحتوي نفسها على أقواس أو فواصل.
-
والنتيجة هي قائمة مفصولة بفواصل لأزواج قيم المفاتيح المصبوبة، والتي يتم تجميدها بأقواس متعرجة
{ }. مسافة واحدة تتبع كل فاصلة. يتم فصل كل زوج من قيم المفاتيح ب->.NULLتتم ترجمة قيمة الخريطة إلى قيمة حرفيةnull.لا يقوم Azure Databricks باقتباس المفاتيح أو القيم الفردية أو وضع علامة عليها، والتي قد تحتوي نفسها على أقواس متعرجة أو فواصل أو
->. -
والنتيجة هي قائمة مفصولة بفواصل لقيم الحقول المصبوبة، والتي يتم تقويمها بأقواس متعرجة
{ }. مسافة واحدة تتبع كل فاصلة.NULLتتم ترجمة قيمة الحقل إلى قيمة حرفيةnull.لا يقوم Azure Databricks باقتباس قيم الحقول الفردية أو وضع علامة عليها، والتي قد تحتوي نفسها على أقواس متعرجة أو فواصل.
-
تنطبق قواعد نوع القيمة الفعلية للنوع
VARIANT.
الأمثلة
> SELECT cast(NULL AS STRING);
NULL
> SELECT cast(-3Y AS STRING);
-3
> SELECT cast(5::DECIMAL(10, 5) AS STRING);
5.00000
> SELECT cast(12345678e-4 AS STRING);
1234.5678
> SELECT cast(1e7 as string);
1.0E7
> SELECT cast(1e6 as string);
1000000.0
> SELECT cast(1e-4 as string);
1.0E-4
> SELECT cast(1e-3 as string);
0.001
> SELECT cast(12345678e7 AS STRING);
1.2345678E14
> SELECT cast(DATE'1900-12-31' AS STRING);
1900-12-31
-- Caesar no more
> SELECT cast(DATE'-0044-03-15' AS STRING);
-0044-03-15
> SELECT cast(DATE'100000-12-31' AS STRING);
+100000-12-31
> SELECT cast(current_timestamp() AS STRING);
2022-04-02 22:29:09.783
> SELECT cast(TIMESTAMP_NTZ'2023-01-01' AS STRING);
2023-01-01 00:00:00
> SELECT cast(INTERVAL -'13-02' YEAR TO MONTH AS STRING);
INTERVAL '-13-2' YEAR TO MONTH
> SELECT cast(INTERVAL '12:04.9900' MINUTE TO SECOND AS STRING);
INTERVAL '12:04.99' MINUTE TO SECOND
> SELECT cast(true AS STRING);
true
> SELECT cast(false AS STRING);
false
-- A bad UTF-8 string
> SELECT cast(x'33800033' AS STRING);
3�3
> SELECT hex(cast(x'33800033' AS STRING));
33800033
> SELECT cast(array('hello', NULL, 'world') AS STRING);
[hello, null, world]
> SELECT cast(array('hello', 'wor, ld') AS STRING);
[hello, wor, ld]
> SELECT cast(array() AS STRING);
[]
> SELECT cast(map('hello', 1, 'world', null) AS STRING);
{hello -> 1, world -> null}
> SELECT cast(map('hello -> 1', DATE'2022-01-01') AS STRING);
{hello -> 1 -> 2022-01-01}
> SELECT cast(map() AS STRING);
{}
> SELECT cast(named_struct('a', 5, 'b', 6, 'c', NULL) AS STRING);
{5, 6, null}
> SELECT cast(named_struct() AS STRING);
{}
> SELECT cast(DATE'2024-01-05'::VARIANT AS STRING);
2024-01-05
التاريخ
targetType إذا كان هو نوع DATE وكان sourceExpr من النوع:
-
والنتيجة هي
NULLDATE. -
sourceExprيجب أن يكون dateString صالحا.إذا
sourceExprلم يكن صالحاdateString، فإن Azure Databricks ترجع خطأ.استخدم try_cast لتحويل أخطاء البيانات غير الصالحة إلى
NULL. -
النتيجة هي جزء التاريخ من الطابع
sourceExprالزمني . -
النتيجة هي جزء التاريخ من timestamp_ntz
sourceExpr. -
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات.
الأمثلة
> SELECT cast(NULL AS DATE);
NULL
> SELECT cast('1900-10-01' AS DATE);
1900-10-01
> SELECT cast('1900-10-01' AS DATE);
1900-10-01
-- There is no February 30.
> SELECT cast('1900-02-30' AS DATE);
Error
> SELECT cast(TIMESTAMP'1900-10-01 12:13:14' AS DATE);
1900-10-01
> SELECT cast(TIMESTAMP_NTZ'1900-10-01 12:13:14' AS DATE);
1900-10-01
> SELECT cast(TIMESTAMP_NTZ'1900-10-01 12:13:14'::VARIANT AS DATE);
1900-10-01
الطابع الزمني
targetType إذا كان هو نوع TIMESTAMP وكان sourceExpr من النوع:
-
والنتيجة هي
NULLDATE. -
sourceExprتتم قراءة كعدد من الثوان منذ1970-01-01 00:00:00 UTC.يتم اقتطاع الكسور الأصغر من ميكرو ثانية.
إذا كانت القيمة خارج نطاق
TIMESTAMP، يتم رفع خطأ تجاوز.استخدم try_cast لتحويل أخطاء تجاوز السعة إلى
NULL. -
sourceExprيجب أن يكون timestampString صالحا.إذا
sourceExprلم يكن صالحاtimestampString، فإن Azure Databricks ترجع خطأ.استخدم try_cast لتحويل أخطاء البيانات غير الصالحة إلى
NULL. -
والنتيجة هي
sourceExprDATEعند00:00:00الساعة.
والنتيجة هي قيمة طابع زمني بنفس حقول السنة/الشهر/اليوم/الساعة/الدقيقة/الثانية من timestamp_ntz sourceExpr.
-
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات.
الأمثلة
> SELECT cast(NULL AS TIMESTAMP);
NULL
> SET TIME ZONE '+00:00';
> SELECT cast(0.0 AS TIMESTAMP);
1970-01-01 00:00:00
> SELECT cast(0.0000009 AS TIMESTAMP);
1970-01-01 00:00:00
> SELECT cast(1e20 AS TIMESTAMP);
Error: overflow
> SELECT cast('1900' AS TIMESTAMP);
1900-01-01 00:00:00
> SELECT cast('1900-10-01 12:13:14' AS TIMESTAMP);
1900-10-01 12:13:14
> SELECT cast('1900-02-30 12:13:14' AS TIMESTAMP);
Error
> SELECT cast(DATE'1900-10-01' AS TIMESTAMP);
1900-10-01 00:00:00
> SELECT cast(TIMESTAMP_NTZ'2023-01-01 02:03:04.567' as TIMESTAMP)
2023-01-01 02:03:04.567
> SELECT cast(DATE'1900-10-01'::VARIANT AS TIMESTAMP);
1900-10-01 00:00:00
TIMESTAMP_NTZ
targetType إذا كان هو نوع TIMESTAMP_NTZ وكان sourceExpr من النوع:
-
والنتيجة هي
NULLDATE. -
sourceExprيجب أن يكون timestampString صالحا.إذا
sourceExprلم يكن صالحاtimestampString، فإن Azure Databricks ترجع خطأ.استخدم try_cast لتحويل أخطاء البيانات غير الصالحة إلى
NULL. -
والنتيجة هي
sourceExprDATE at00:00:00hrs. -
والنتيجة هي الوقت المحلي كما في
sourceExprالمنطقة الزمنية لجلسة العمل. -
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات.
الأمثلة
> SELECT cast(NULL AS TIMESTAMP_NTZ);
NULL
> SELECT cast('1900' AS TIMESTAMP_NTZ);
1900-01-01 00:00:00
> SELECT cast('1900-10-01 12:13:14' AS TIMESTAMP_NTZ);
1900-10-01 12:13:14
> SELECT cast('1900-02-30 12:13:14' AS TIMESTAMP_NTZ);
Error
> SELECT cast(DATE'1900-10-01' AS TIMESTAMP_NTZ);
1900-10-01 00:00:00
> SELECT current_timezone(), CAST(TIMESTAMP'2021-7-1T8:43:28' as TIMESTAMP_NTZ);
America/Los_Angeles 2021-07-01 08:43:28
> SELECT current_timezone(), CAST(TIMESTAMP'2021-7-1T8:43:28UTC+3' as TIMESTAMP_NTZ);
America/Los_Angeles 2021-06-30 22:43:28
> SELECT cast(DATE'1900-10-01'::VARIANT AS TIMESTAMP_NTZ);
1900-10-01 00:00:00
الفاصل الزمني للشهر السنوي
targetType إذا كان هو فاصل زمني لمدة شهر من السنة وكان sourceExpr من النوع:
-
والنتيجة هي فاصل
NULLزمني لمدة شهر. -
ينطبق على:
Databricks SQL
Databricks Runtime 11.3 LTS وما فوقيتم تفسير الرقم على أنه عدد من الوحدات السفلية
targetTypeمن yearmonthIntervalQualifier. -
sourceExprيجب أن يكون yearMonthIntervalString صالحا.إذا
sourceExprلم يكن صالحاyearMonthIntervalString، فإن Azure Databricks ترجع خطأ.استخدم try_cast لتحويل أخطاء البيانات غير الصالحة إلى
NULL. -
targetTypeإذا كان yearMonthIntervalQualifier يتضمنMONTHالقيمة تظل دون تغيير، ولكن يتم إعادة تفسيرها لمطابقة النوع الهدف.وإلا، إذا كان نوع المصدر yearMonthIntervalQualifier يتضمن
MONTH، يتم اقتطاع النتيجة إلى سنوات كاملة.
الأمثلة
> SELECT cast(NULL AS INTERVAL YEAR);
NULL
> SELECT cast('1-4' AS INTERVAL YEAR TO MONTH)::STRING;
INTERVAL '1-4' YEAR TO MONTH
> SELECT cast('1' AS INTERVAL YEAR TO MONTH);
error
> SELECT cast(INTERVAL '1-4' YEAR TO MONTH AS INTERVAL MONTH)::STRING;
INTERVAL '16' MONTH
> SELECT cast(14 AS INTERVAL YEAR TO MONTH)::STRING;
INTERVAL '1-2' YEAR TO MONTH
> SELECT cast(INTERVAL '1-11' YEAR TO MONTH AS INTERVAL YEAR)::STRING;
INTERVAL '1' YEAR
الفاصل الزمني لليوم
إذا كان عبارة عن targetType فاصل زمني يومي وكان sourceExpr من النوع:
-
والنتيجة هي فاصل
NULLزمني لليوم. -
ينطبق على:
Databricks SQL
Databricks Runtime 11.3 LTS وما فوقيتم تفسير الرقم على أنه عدد من الوحدات السفلية
targetTypeمن dayTimeIntervalQualifier. إذا كانت الوحدة عبارةSECONDعن أي كسور، يتم تفسيرها على أنها ثوان كسرية. -
sourceExprيجب أن يكون dayTimeIntervalString صالحا.إذا
sourceExprلم يكن صالحاdayTimeIntervalString، فإن Azure Databricks ترجع خطأ.استخدم try_cast لتحويل أخطاء البيانات غير الصالحة إلى
NULL. -
targetTypeإذا كان dayTimeIntervalQualifier يتضمن أصغر وحدة من نوع المصدر dayTimeIntervalQualifier، تظل القيمة دون تغيير، ولكن يتم إعادة تفسيرها لمطابقة النوع الهدف.وإلا،
sourceExprيتم اقتطاع الفاصل الزمني ليناسبtargetType.
> SELECT cast(NULL AS INTERVAL HOUR);
NULL
> SELECT cast('1 4:23' AS INTERVAL DAY TO MINUTE)::STRING;
INTERVAL '1 04:23' DAY TO MINUTE
> SELECT cast('1' AS INTERVAL DAY TO MINUTE);
error
> SELECT cast(INTERVAL '1 4:23' DAY TO MINUTE AS INTERVAL MINUTE)::STRING;
INTERVAL '1703' MINUTE
> SELECT cast(INTERVAL '1 4:23' DAY TO MINUTE AS INTERVAL HOUR)::STRING;
INTERVAL '28' HOUR
> SELECT cast(125.3 AS INTERVAL MINUTE TO SECOND)::STRING;
INTERVAL '2:5.3' MINUTE TO SECOND
BOOLEAN
إذا كان عبارة عن targetType قيمة منطقية وكان sourceExpr من النوع:
-
والنتيجة هي
NULLمن نوعBOOLEAN. -
إذا كان
sourceExpr:0: النتيجة هيfalse.NULL: النتيجة هيNULL.special floating point value: النتيجة هيtrue.
وإلا، فإن النتيجة هي
true.
-
إذا كان
sourcEexpr(غير حساس لحالة الأحرف):'T', 'TRUE', 'Y', 'YES', or '1': النتيجة هيtrue'F', 'FALSE', 'N', 'NO', or '0': النتيجة هيfalseNULL: النتيجة هيNULL
وإلا، يقوم Azure Databricks بإرجاع بناء جملة إدخال غير صالح لنوع الخطأ المنطقي.
استخدم try_cast لتحويل أخطاء البيانات غير الصالحة إلى
NULL. -
تنطبق قواعد نوع القيمة الفعلية للنوع
VARIANT.
الأمثلة
> SELECT cast(NULL AS BOOLEAN);
NULL
> SELECT cast('T' AS BOOLEAN);
true
> SELECT cast('True' AS BOOLEAN);
true
> SELECT cast('1' AS BOOLEAN);
true
> SELECT cast('0' AS BOOLEAN);
false
> SELECT cast('n' AS BOOLEAN);
false
> SELECT cast('on' AS BOOLEAN);
error: invalid input syntax for type boolean
> SELECT cast(0 AS BOOLEAN);
false
> SELECT cast(0.0E10 AS BOOLEAN);
false
> SELECT cast(1 AS BOOLEAN);
true
> SELECT cast(0.1 AS BOOLEAN);
true
> SELECT cast('NaN'::FLOAT AS BOOLEAN);
true
> SELECT cast(1::VARIANT AS BOOLEAN);
true
ثنائي
إذا كان عبارة عن targetType BINARY وكان sourceExpr من النوع:
-
والنتيجة هي
NULLمن نوعBINARY. -
والنتيجة هي ترميز UTF-8 ل
surceExpr. -
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات.
الأمثلة
> SELECT cast(NULL AS BINARY);
NULL
> SELECT hex(cast('Spark SQL' AS BINARY));
537061726B2053514C
> SELECT hex(cast('Oдesa' AS BINARY));
4FD0B4657361
> SELECT hex(cast('Oдesa'::VARIANT AS BINARY));
4FD0B4657361
ARRAY
targetType إذا كان هو ARRAY < targetElementType > وكان sourceExpr من النوع:
-
النتيجة هي من
NULLtargeType. -
إذا كان التحويل من
sourceElementTypeإلىtargetElementTypeمدعوما، تكون النتيجةARRAY<targetElementType>مع جميع العناصر التي يتم تحويلها إلىtargetElementType.يثير Azure Databricks خطأ إذا لم يكن الإرسال مدعوما أو إذا تعذر تحويل أي من العناصر.
استخدم try_cast لتحويل البيانات غير الصالحة أو أخطاء تجاوز السعة إلى
NULL. -
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات.
الأمثلة
> SELECT cast(NULL AS ARRAY<INT>);
NULL
> SELECT cast(array('t', 'f', NULL) AS ARRAY<BOOLEAN>);
[true, false, NULL]
> SELECT cast(array('t', 'f', NULL) AS INTERVAL YEAR);
error: cannot cast array<string> to interval year
> SELECT cast(array('t', 'f', 'o') AS ARRAY<BOOLEAN>);
error: invalid input syntax for type boolean: o.
> SELECT cast(array('t', 'f', NULL)::VARIANT AS ARRAY<BOOLEAN>);
[true, false, NULL]
تعيين
targetType إذا كان هو MAP < targetKeyType، targetValueType > وهو sourceExpr من النوع:
-
النتيجة هي من
NULLtargetType. MAP <sourceKeyType, sourceValueType >
إذا كانت عمليات الإرسال من
sourceKeyTypetargetKeyTypeوإلىsourceValueTypetargetValueTypeمدعومة، تكونMAP<targetKeyType, targetValueType>النتيجة مع جميع المفاتيح التي يتم تحويلها إلىtargetKeyTypeو كافة القيم التي يتم تحويلها إلىtargetValueType.يثير Azure Databricks خطأ إذا لم يكن الإرسال مدعوما أو إذا تعذر تحويل أي من المفاتيح أو القيم.
استخدم try_cast لتحويل البيانات غير الصالحة أو أخطاء تجاوز السعة إلى
NULL.-
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات. OBJECT < [sourceFieldName : sourceFieldType [, ...]] >
يتم تحويل كل
sourceFieldNameنوعSTRINGإلىtargetKeyTypeوتعيينه إلى مفتاح خريطة. يتم تحويلtargetValueTypeكل قيمةsourceFieldTypeحقل مصدر لها وتعيين قيمة الخريطة المعنية.يثير Azure Databricks خطأ إذا لم يتم دعم أي عمليات تحويل أو إذا تعذر تحويل أي من قيم الحقول أو قيم المفاتيح.
استخدم try_cast لتحويل البيانات غير الصالحة أو أخطاء تجاوز السعة إلى
NULL.
الأمثلة
> SELECT cast(NULL AS MAP<STRING, INT>);
NULL
> SELECT cast(map('10', 't', '15', 'f', '20', NULL) AS MAP<INT, BOOLEAN>);
{10 -> true, 15 -> false, 20 -> null}
> SELECT cast(map('10', 't', '15', 'f', '20', NULL) AS MAP<INT, ARRAY<INT>>);
error: cannot cast map<string,string> to map<int,array<int>>
> SELECT cast(map('10', 't', '15', 'f', '20', 'o') AS MAP<INT, BOOLEAN>);
error: invalid input syntax for type boolean: o.
-- Casting an OBJECT to a MAP
> SELECT schema_of_variant(parse_json('{"cars": 12, "bicycles": 5 }'));
OBJECT<bicycles: BIGINT, cars: BIGINT>
> SELECT CAST(parse_json('{"cars": 12, "bicycles": 5 }') AS MAP<STRING, INTEGER>);
{bicycles -> 5, cars -> 12}
البنيه
targetType إذا كان هو STRUCT <[targetFieldName: targetFieldType [NOT NULL] [COMMENT str] [, ...]] > وهو sourceExpr من النوع:
-
النتيجة هي من
NULLtargetType. STRUCT < [sourceFieldName : sourceFieldType [NOT NULL] [COMMENT str] [, ...]] >
sourceExprيمكن تحويل إلىtargetTypeإذا كانت جميع هذه الشروط صحيحة:- يحتوي نوع المصدر على نفس عدد الحقول مثل الهدف
- بالنسبة لجميع الحقول:
sourceFieldTypeNيمكن تحويلها إلىtargetFieldTypeN. - لكافة قيم الحقول: يمكن تحويل قيمة الحقل المصدر N إلى
targetFieldTypeNوالقيمة ليست فارغة إذا تم وضع علامة على الحقل الهدف N كNOT NULL.
sourceFieldNameلا تطابق s وقيود المصدرNOT NULLوs المصدرCOMMENTوtargetTypeو يتم تجاهلها.يثير Azure Databricks خطأ إذا لم يكن الإرسال مدعوما أو إذا تعذر تحويل أي من الحقول.
استخدم try_cast لتحويل البيانات غير الصالحة أو أخطاء تجاوز السعة إلى
NULL.-
تنطبق قواعد النوع للقيمة الفعلية التي يحتفظ بها
VARIANTنوع البيانات. OBJECT < [sourceFieldName : sourceFieldType [, ...]] >
يتم مطابقة جميع
sourceFieldNames معsourceFieldNames. يتم تحويل كل قيمةsourceFieldTypeحقل مصدر إلى المطابقةtargetValueTypeوتعيينها إلى قيمة الخريطة المعنية.targetFieldNameإذا لم يتم مطابقة ، فإن قيمة الحقل هيNULL.sourceFieldNameإذا لم يتم مطابقة، يتم تجاهل الحقل.يثير Azure Databricks خطأ إذا لم يتم دعم أي عمليات تحويل أو إذا تعذر تحويل أي من قيم الحقول أو قيم المفاتيح.
استخدم try_cast لتحويل البيانات غير الصالحة أو أخطاء تجاوز السعة إلى
NULL.
الأمثلة
> SELECT cast(NULL AS STRUCT<a:INT>);
NULL
> SELECT cast(named_struct('a', 't', 'b', '1900-01-01') AS STRUCT<b:BOOLEAN, c:DATE NOT NULL COMMENT 'Hello'>);
{"b":true,"c":1900-01-01}
> SELECT cast(named_struct('a', 't', 'b', NULL::DATE) AS STRUCT<b:BOOLEAN, c:DATE NOT NULL COMMENT 'Hello'>);
error: cannot cast struct<a:string,b:date> to struct<b:boolean,c:date>
> SELECT cast(named_struct('a', 't', 'b', '1900') AS STRUCT<b:BOOLEAN, c:ARRAY<INT>>);
error: cannot cast struct<a:string,b:string> to struct<b:boolean,c:array<int>>
> SELECT cast(named_struct('a', 't', 'b', 'hello') AS STRUCT<b:BOOLEAN, c:DATE>);
error: Cannot cast hello to DateType
> SELECT cast(named_struct('a', 't', 'b', '1900-01-01')::VARIANT AS STRUCT<b:BOOLEAN, c:DATE NOT NULL COMMENT 'Hello'>);
{"b":true,"c":1900-01-01}
-- Casting an OBJECT to a STRUCT
> SELECT schema_of_variant(parse_json('{"name": "jason", "age": 25 }'));
OBJECT<age: BIGINT, name: STRING>
> SELECT CAST(parse_json('{"name": "jason", "age": 25 }') AS STRUCT<id: BIGINT, name: STRING>);
{"id":null,"name":"jason"}
متغير
targetType إذا كان هو VARIANT وكان sourceExpr من النوع:
-
والنتيجة هي
NULLمن نوعVARIANT. -
النتيجة هي
VARIANT، تمثل القيمة الرقمية. يجب أن تكون <دقةDECIMALالأنواع = 38.يتم تعيين جميع الأرقام المتكاملة إلى
BIGINT.يتم تعيين جميع
DECIMALالقيم إلى أضيق دقة ومقياس. -
النتيجة هي
VARIANT، تمثلSTRINGالقيمة. -
النتيجة هي
VARIANT، تمثلDATEالقيمة. -
النتيجة هي
VARIANT، تمثلTIMESTAMPالقيمة. -
النتيجة هي
VARIANT، تمثلTIMESTAMP NTZالقيمة. -
النتيجة هي
VARIANT، تمثلBOOLEANالقيمة. -
النتيجة هي
VARIANT، تمثلBINARYالقيمة. -
إذا كان التحويل من
sourceElementTypeإلىVARIANTمدعوما، فإن النتيجة هيVARIANT، تمثلARRAY<sourceElementType>.يثير Azure Databricks خطأ إذا لم يكن الإرسال مدعوما.
استخدم try_cast لتحويل البيانات غير الصالحة أو أخطاء تجاوز السعة إلى
NULL.
الأمثلة
> SELECT cast(NULL AS VARIANT);
NULL
> SELECT cast(5.1000 AS VARIANT);
5.1
> SELECT schema_of_variant(cast(5 AS VARIANT));
BIGINT