مشاركة عبر


to_number دالة

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime 11.3 LTS وما فوق

إرجاع expr التحويل إلى DECIMAL باستخدام التنسيق fmt.

بناء الجملة

to_number(expr, fmt)

fmt
  { ' [ MI | S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

الوسيطات

  • expr: تعبير STRING يمثل رقما. expr قد تتضمن مسافات بادئة أو لاحقة.
  • fmt: قيمة سلسلة حرفية، تحدد التنسيق المتوقع ل expr.

المرتجعات

DECIMAL(p, s) حيث p هو إجمالي عدد الأرقام (0 أو 9) وهو s عدد الأرقام بعد الفاصلة العشرية أو 0 إذا لم يكن هناك أي رقم.

fmt يمكن أن يحتوي على العناصر التالية (غير حساس لحالة الأحرف):

  • 0 أو 9

    تحديد رقم متوقع بين 0 و 9. 0 يشير إلى يسار النقاط العشرية إلى أنه يجب أن expr يحتوي على عدد من الأرقام على الأقل. يشير البادئة 9 إلى أنه expr قد يحذف هذه الأرقام.

    expr يجب ألا يكون أكبر مما يسمح به عدد الأرقام الموجودة على يسار الفاصلة العشرية.

    تشير الأرقام الموجودة إلى يمين الفاصلة العشرية إلى أن معظم الأرقام قد تكون إلى يمين الفاصلة العشرية من fmt الأرقام expr المحددة.

  • . أو D

    تحديد موضع الفاصلة العشرية.

    expr لا يحتاج إلى تضمين فاصلة عشرية.

  • , أو G

    تحديد موضع , فاصل التجميع (الآلاف). يجب أن يكون 0 هناك أو 9 إلى اليسار واليمين لكل فاصل تجميع. expr يجب أن يتطابق مع فاصل التجميع ذي الصلة بحجم الرقم.

  • L أو $

    تحديد موقع علامة العملة $ . يمكن تحديد هذا الحرف مرة واحدة فقط.

  • S أو MI

    يحدد موضع علامة '+' أو '-' الاختيارية ل S، و'-' فقط ل MI. يمكن تحديد هذا التوجيه مرة واحدة فقط.

  • PR

    مسموح به فقط في نهاية سلسلة التنسيق؛ يحدد هذا الرقم الذي expr يشير إلى رقم سالب مع أقواس ملتفة بزاوية (<1>).

إذا كان expr يحتوي على أي أحرف أخرى غير 0 من خلال 9، أو الأحرف المسموح بها في fmt، يتم إرجاع خطأ.

للإرجاع NULL بدلا من خطأ للاستخدام غير الصالح expr try_to_number().

الأمثلة

-- The format expects:
--  * an optional sign at the beginning,
--  * followed by a dollar sign,
--  * followed by a number between 3 and 6 digits long,
--  * thousands separators,
--  * up to two dight beyond the decimal point.
> SELECT to_number('-$12,345.67', 'S$999,099.99');
 -12345.67

-- Plus is optional, and so are fractional digits.
> SELECT to_number('$345', 'S$999,099.99');
 345.00

-- The format requires at least three digits.
> SELECT to_number('$45', 'S$999,099.99');
 Error: INVALID_FORMAT.MISMATCH_INPUT

-- The format requires at least three digits.
> SELECT try_to_number('$45', 'S$999,099.99');
 NULL

-- The format requires at least three digits
> SELECT to_number('$045', 'S$999,099.99');
 45.00

-- Using brackets to denote negative values
> SELECT to_number('<1234>', '999999PR');
 -1234